Вызов функции-члена 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 или новее, я считаю.