无法获取Mysqli_result

时间:2012-09-02 16:25:43

标签: php mysqli

我有这个错误

警告:mysqli_fetch_array()[function.mysqli-fetch-array]:无法在 /home/fights7/public_html/include/load_more_home_posts.php 中获取mysqli_result在线 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);

1 个答案:

答案 0 :(得分:13)

直接看来,您在fetch循环中调用了mysqli_free_result(),因此在第一次循环迭代后,您的结果资源已被关闭并释放,并且不再有可用的结果。

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);

我注意到您在没有指定mysqli_fetch_array()的情况下调用MYSQLI_ASSOC,因此您将获得数字和关联键。如果您使用的是JSON中的所有内容,则在使用MYSQLI_ASSOCmysqli_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.
}