@sequelone

Как правильно переписать функцию mysqli_fetch_array($result) в PHP 7?

Всем привет. Пришлось переписывать устаревший скрипт для сверки книг из одной таблице в другой, чтобы вы понимали все запросы к MySQL были такие mysql_query(), mysql_fetch_array() и я их начал переписывать под PHP 7 добавляя в конце после mysql букву i. Дошёл до середины скрипты и мне начало выдавать вот такую ошибку:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/checklist.php on line 42


С появлением фреймворков, Doctrine и PDO совсем позабыл как на MySQL чистом делать, не хочется всё переписывать, объём достаточно большой. Вот что у меня в PHP накорябано.

$db_link = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME);
	mysqli_query($db_link, "SET NAMES utf8");

	$q = "SELECT * FROM `books` WHERE id NOT IN (" . $ids . ") ORDER BY title";
	$result = mysqli_query($db_link, $q);

	while ($row = mysqli_fetch_array($result)){
		....
	}


Может кто-нибудь подсказать что к чему? Как это по быстрому пофиксить?
  • Вопрос задан
  • 3202 просмотра
Пригласить эксперта
Ответы на вопрос 3
SagePtr
@SagePtr
Еда - это святое
Если много чего накарябано с использованием устаревшей библиотеки, можно всё не переписывать, а воткнуть полифил (к примеру, этот или этот)
Ответ написан
Комментировать
@f_u_s_s
Любопытный кодер
Попробуйте так:
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)){ //если дальше идет обработка индексного массива
...
}
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ //если обработка как ассоциативного
...
}


UPD: а вообще, проверьте сам запрос, кажется у вас mysqli_query() возвращает false
Ответ написан
nefone
@nefone
Junior PHP разработчик
проверить есть ли результат из mysqli_query():
if ($result) {
  while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
      $data[] = $row;
  }
} else {
echo mysqli_error($db_link);
}

В результате в $data - получится ассиоциативный массив из таблицы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы