Intereting Posts
Как анализировать XML-файл в PHP Url кодирует точку (.) В URL? Как вставить несколько строк mysqli_multi_query ()? Лучший способ распознавания неиспользуемых переменных Guzzle: обрабатывать 400 плохих запросов Как указать несколько условий соединения для отношений 1: 1 в Доктрине 2 Предупреждение: функция файлового архива не работает данные быстрой синхронизации данных ядра базы данных mysql file_get_contents (): поток не поддерживает поиск / Когда поведение PHP об этом изменилось? Ведущие косые черты в JSON из API Google Finance API Отображать сообщение о предупреждении на веб-странице при пересылке с одной страницы на другую при загрузке страницы Рекомендации по производительности для поиска уникальной перестановки Как добавить несколько кнопок для загрузки изображений без плагинов для wordpress Вложенный массив в список HTML PHP. Подготовьте URL-адрес ко всем ссылкам без http или https.

PHP Неустранимая ошибка: вызов функции-члена fetch_object () в boolean

Я получил фатальную ошибку php после сервера передачи с php v5.6.19, до этого у меня не было проблем вообще со следующим скриптом

Получение данных из таблицы db:

function get_department_list($mysqli) { $sql = $mysqli->query("SELECT * FROM `dept` ORDER BY `dept_id` ASC"); if($sql->num_rows > 0){ return $sql; }else{ return false; } } 

Заполнение данных в HTML:

 <ul class="department overflow-scroll text-center"> <?php $shop = new Shop; $depts = $shop->get_department_list($mysqli); while($dept = $depts->fetch_object()){ echo '<li><a href="'.baseurl.'/shop/'.strtolower(str_replace('\'','',$dept->dept_name)).'">'.$dept->dept_name.'</a></li>'; } ?> </ul> 

В итоге у меня появилась ошибка:

Неустранимая ошибка: вызов функции-члена fetch_object () в boolean в C: \ xampp \ htdocs \ project \ include \ header.php в строке 206

Во-первых, вы возвращаете логическое значение из своей функции. Поэтому неудивительно, что PHP говорит вам об этом.

Во-вторых, вы должны держать вопросы раздельными. функция, которая работает с mysqli, должна содержать все объекты mysqli внутри. Возвращает только массив, который можно использовать в любом месте без необходимости повторного вызова функций mysqli.

 function get_department_list($mysqli) { $sql = $mysqli->query("SELECT * FROM `dept` ORDER BY `dept_id` ASC"); return $sql->fetch_all(); } 

И затем используйте не время, а foreach

 foreach ($depts as $dept) ... 

Кроме того (и больше для людей, у которых может возникнуть возможность приземлиться на этот вопрос в поисках ответа на их вопрос), вы всегда должны устанавливать правильную отчетность об ошибках для mysqli, как показано в этом ответе

Обновите цикл while для этого случая, когда вы получаете false из вызова $shop->get_department_list()

обновляется, как и эта проверка на $depts если какие-либо данные затем получают $dept :

 while($depts && $dept = $depts->fetch_object()){