Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

274
11 марта 2017, 04:32

Здравствуйте. Пишу скрипт на php, который по запросу пользователя выводит список документов, по 10 на страницу, все ок, все работает. Но если в запросе указать то, чего нет, выдает вот такую ошибку.

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

сам код такого типа

$query = "SELECT * FROM `nal` WHERE `name`LIKE \"%$search%\" AND `remainder` > 0 ORDER BY `id` DESC LIMIT $start_from, $on_page";
$res = mysql_query($query);

while ($row = mysql_fetch_assoc($res))
{

Как я понял $res возвращает значение False, и поэтому дальше и вылазит ошибка, как правильнее исправить. Добавить if перед while? Я пробовал перед этим просто написать что если равно false вывести echo результатов нет и exit, но он вывел мне и сообщение, и ошибку.

Answer 1

Попробуйте следующий код:

$res = mysql_query($query);
if (!$res) {
    echo "Не удается успешно выполнить запрос ($query). Ответ базы данных: " . mysql_error();
    exit;
}
if (mysql_num_rows($res) == 0) {
    echo "Записи не найдены, просто выходим";
    exit;
}
while ($row = mysql_fetch_assoc($res))
{

В таком случае вы увидите причину по которой не работает ваш код.

READ ALSO
Вырезать часть текста из строки

Вырезать часть текста из строки

ЗдравствуйтеЕсть строка, в которой содержится текст типа:

368
Деплой на мастер сервер

Деплой на мастер сервер

На данный момент в проекте есть дев сервер и у каждого разработчика своё локальное окружение приближенное к реальному

303
Оптимизация изображений Laravel 5.3

Оптимизация изображений Laravel 5.3

Для загрузки изображений используются посторонняя библиотека изображение сохраняется в нескольких расширениях с учетом пропорций, это...

590
PHP вычесть час из даты

PHP вычесть час из даты

Я получаю дату в виде строчки: "0903

350