У меня есть эта ошибка
Предупреждение : mysqli_fetch_array () [function.mysqli-fetch-array]: Не удалось получить 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);
Сразу же, кажется, вы вызываете 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. }