6

このエラーが発生しました

警告:mysqli_fetch_array()[function.mysqli-fetch-array]:12行目の/home/fights7/public_html/include/load_more_home_posts.phpでmysqli_resultをフェッチできませんでした

そして、私が以下のコードで何を間違えたのか知りたいですか?

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

1 に答える 1

16

すぐに、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_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.
}
于 2012-09-02T16:27:25.713 に答える