我试图回复下表标题为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;
};
}
我事先感谢你们的帮助。
答案 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;
}