-1

Делаем запрос к БД, и перебираем результат.

    $result = $mysqli->query( $query );

    while ($row = $result->fetch_assoc()){

        $resultArray[] = $row;
    }

Запрос может ничего не вернуть и fetch_assoc(), получив пустое значение, выдаёт ошибку Call to a member function fetch_assoc() on boolean in ... Соотвественно, я проверяю $result, и получаю:

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 1
    [lengths] => 
    [num_rows] => 6
    [type] => 0
)

Мне эта выборка ни о чём не говорит, причём выводятся эти цифры в независимости о того, вернул запрос результаты или нет. Причём, переменная с результатами вызывается в цепочке функций, и через каждую экранирует свой результат:

введите сюда описание изображения

Значения в каждой функции разное. Хотя, объект один и отображаться везде должен одинаково. Но суть вопроса в другом, как прочитать в объекте результата запроса, в $result, вернул он поля или нет.

1 Answers1

-1

Вы ищете проблему не там. fetch_assoc не сгенерирует ошибку при обращении к результату успешно выполненного select запроса, даже если запрос вернул 0 строк.

Call to a member function fetch_assoc() on boolean in

Однозначно говорит о том, что в момент ошибки $result был типа boolean. А метод query в свою очередь может дать булевого типа результат если:

  • запрос был выполнен с ошибкой
  • был выполнен запрос не являющийся, цитирую, SELECT, SHOW, DESCRIBE or EXPLAIN

Следовательно смотрите какой именно запрос вы выполняли, а так же добавьте проверку результата метода query на возможные ошибки.

Мелкий
  • 21,843
  • Всё правильно, SQL запрос формировался без необходимых значений. – Overflow Jun 15 '19 at 10:17