Вызов функции-члена fetch_assoc() в boolean в <path>
Я получаю вышеуказанную ошибку при запуске приведенного ниже кода для отображения заказов, сделанных из базы данных.
<?php
$servername = "localhost";
$username = "*********";
$password = "********";
$dbname = "thelibr1_fyp";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, tablename, numseats, person FROM confirms";
$result = $conn->query($sql);
?>
<table id="Confirms" border ="2" style="length:900px;width:350px;">
<thead>
<tr style= "background-color: #A4A4A4;">
<td>Booking ID:</td>
<td>Table No.:</td>
<td>No. of Seats:</td>
<td>Person:</td>
</tr>
</thead>
<tbody>
<?php
while(($row = $result->fetch_assoc()) !== null){
echo
"<tr>
<td>{$row['id']}</td>
<td>{$row['tablename']}</td>
<td>{$row['numseats']}</td>
<td>{$row['person']}</td>
</tr>\n";
}
?>
</tbody>
</table>
Я только начал получать сообщение об ошибке, когда начал размещать его вживую. Он отлично работает на моем персональном компьютере, также отлично работает соединение с базой данных.
Ответы
Ответ 1
Метод запроса может возвращать false
вместо набора результатов в случае возникновения ошибки. Вот почему вы получаете ошибку при вызове метода fetch_assoc, который, очевидно, не существует, когда $result равен false
.
Это означает, что вы указали ошибку в инструкции SELECT. Чтобы отобразить эту ошибку, сделайте следующее:
$result = $conn->query($sql) or die($conn->error);
Скорее всего, у вас неправильное написание имени таблицы или имени столбца. Возможно, при переходе на хост вы не создали эту таблицу правильно и сделали там орфографическую ошибку.
Фактически вы должны увидеть ту же ошибку при выполнении одного и того же запроса через phpAdmin.
Также замените эту строку:
while(($row = $result->fetch_assoc()) !== null){
с помощью только:
while($row = $result->fetch_assoc()) {
Вы также можете добавить это для отладки:
echo "number of rows: " . $result->num_rows;
Ответ 2
Эта ошибка обычно возникает, когда таблицы в запросе не существует. Просто проверьте орфографию таблицы в запросе, и она будет работать.
Ответ 3
см. следующий код. Выделите свой код таким образом.
$query="select * from articles";
$result=$conn->query($query);
$row = $result->fetch_assoc();
if($row)
{
echo $row['content'];
}
echo "no results founded";
?>
Ответ 4
Хорошо, я только что исправил эту ошибку.
Это происходит, когда в запросе есть ошибка или таблица не существует.
Попробуйте отладить запрос на покупку, запустив его непосредственно на phpmyadmin, чтобы подтвердить правильность запроса MySQL.
Ответ 5
Пожалуйста, используйте if condition with while loop и попробуйте.
например.
if ($result = $conn->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
}
/* free result set */
$result->free();
}
Ответ 6
Вам нужно обновить конфигурационный файл php.ini на сервере хост-провайдера, доверяйте мне, более того, нет ничего плохого в вашем коде. Мне потребовалось почти полтора месяца, чтобы понять, что большинство хостинговых серверов не обновляются в файлах php.ini, например. php 5.5 или новее, я считаю.