并非所有数据都在显示

时间:2018-06-08 16:44:03

标签: php mysql sql database

我试图回复下表标题为sectionamain的数据,但是我只从第一行获取数据(TitleID = 1)

|TitleID | MainTitle            | 
|1       |This is a title       | 
|2       |This is another title |

以下是我正在使用的PHP代码:

function get_practices_titles() {
    global $connection;
    $query = "SELECT * ";
    $query .= "FROM sectionamain ";
    $query .= "ORDER BY TitleID ASC";
    $A_list = mysqli_query($connection, $query);
    confirm_query($A_list);
    return $A_list;    
}

function practices_titles() {
   $output = "<div class=\"container inner\">\n";
   $output .= "<div class=\"wrap\">\n";
   $A_set = get_practices_titles();
   while ($list_A = mysqli_fetch_assoc($A_set)) {
       $output .= "<h1 class\=showcontent\" id=";
       $output .= htmlentities($list_A["TitleID"]);
       $output .= ">";
       $output .= htmlentities($list_A["MainTitle"]);
       $output .= "</h1>";
       mysqli_free_result($A_set);
       $output .="</div>\n</div>";
       return $output;
    };
}

我事先感谢你们的帮助。

2 个答案:

答案 0 :(得分:0)

我相信你需要将mysqli_free_result($A_set);移到你的while循环之外。

在完成循环之前,你已经摆脱了结果。在while循环结束后将其移动到。

来自文档:http://php.net/manual/en/mysqli-result.free.php

  

你应该总是用mysqli_free_result()来释放你的结果   不再需要你的结果对象了。

但是你仍然需要它 - 你只需循环一个结果就可以释放内存。

答案 1 :(得分:0)

从循环中移除以下3行到函数末尾:

  mysqli_free_result($A_set);
   $output .="</div>\n</div>";
   return $output;

所以你的功能将是这样的:

  function practices_titles() {
 $output = "<div class=\"container inner\">\n";
 $output .= "<div class=\"wrap\">\n";
 $A_set = get_practices_titles();
  while ($list_A = mysqli_fetch_assoc($A_set)) {
   $output .= "<h1 class\=showcontent\" id=";
   $output .= htmlentities($list_A["TitleID"]);
   $output .= ">";
   $output .= htmlentities($list_A["MainTitle"]);
   $output .= "</h1>";

};
   mysqli_free_result($A_set);
   $output .="</div>\n</div>";
   return $output;
  }