我有这个错误
警告:mysqli_fetch_array()[function.mysqli取阵列]:在无法提取mysqli_result /home/fights7/public_html/include/load_more_home_posts.php上线12
并想知道我在下面的代码中做错了什么?
$articles_data = mysqli_query($mysqli,"SELECT * FROM streamdata WHERE streamitem_id < '$lastID' ORDER BY streamitem_id DESC LIMIT 10") or die(mysql_error());
while($articles_info = mysqli_fetch_array($articles_data)) {
$json = array();
$json['streamitem_id'] = $articles_info['streamitem_id'];
$json['streamitem_content'] = $articles_info['streamitem_content'];
$json['streamitem_timestamp'] = $articles_info['streamitem_timestamp'];
mysqli_free_result($articles_data);
Run Code Online (Sandbox Code Playgroud)
Mic*_*ski 13
直接,你似乎mysqli_free_result()在你的fetch循环中调用,所以在第一次循环迭代之后,你的结果资源已经被关闭并释放,并且没有更多的结果可用.
while($articles_info = mysqli_fetch_array($articles_data)) {
$json = array();
$json['streamitem_id'] = $articles_info['streamitem_id'];
$json['streamitem_content'] = $articles_info['streamitem_content'];
$json['streamitem_timestamp'] = $articles_info['streamitem_timestamp'];
// Don't do this!
//mysqli_free_result($articles_data);
}
// If you need to, free it outside the loop
mysqli_free_result($articles_data);
Run Code Online (Sandbox Code Playgroud)
我注意到你正在调用mysqli_fetch_array()而没有指定MYSQLI_ASSOC,所以你得到了数字和关联键.如果您使用的是JSON中的所有内容,则在使用MYSQLI_ASSOC或时,您不需要执行所有这些分配mysqli_fetch_assoc():
while($articles_info = mysqli_fetch_assoc($articles_data)) {
// No need for the $json array. Just use $articles_info directly
// if you were going to json_encode() it.
}
Run Code Online (Sandbox Code Playgroud)