2016-02-27 5 views
7

Im получение вышеуказанной ошибки при запуске hte ниже кода для отображения заказов, сделанных из базы данных.Вызов функции-члена 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> 

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

+0

Да, это тоже проблема. – dhool

+0

Я пробовал ваш код, его работа для меня, проверить вашу базу данных и запрос? – C2486

+0

Какой результат вы получаете после $ result = $ conn-> query ($ sql); print_r ($ result); – C2486

ответ

-1

Пожалуйста, используйте условие с циклом while и попробуйте.

например.

if ($result = $conn->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 

    } 
    /* free result set */ 
    $result->free(); 
} 
+0

Я исправляю ваше предложение, и теперь он удаляет ошибку, но выходной вывод не выводится, и они, безусловно, содержат записи в базе данных, которые будут выводиться. – dhool

8

запроса метод может возвращать false вместо результата, установленного в случае, если есть ошибка. Вот почему вы получаете ошибку в вызове метода fetch_assoc, который, очевидно, не существует, когда $ result is 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; 
+0

ОК, так что это помогло мне связать неправильное имя базы данных, исправлено это, но все равно то же самое, что вывод не выводится. «Или die ($ conn-> error)» теперь ничего не возвращает, но им путают, почему никакие записи не отображаются. – dhool

+0

Каков результат при запуске SELECT непосредственно в phpAdmin (убедитесь, что вы на правильном сервере)? – trincot

-1

Вы должны обновить php.ini config на сервере вашего хост-провайдера, поверьте мне об этом, скорее всего, нет ничего плохого в вашем коде. Мне потребовалось почти полтора месяца, чтобы понять, что большинство хостинговых серверов не обновляются в файлах php.ini, например. php 5.5 или новее, я считаю.

0

см. Следующий код .edit ваш код.

$query="select * from articles"; 
    $result=$conn->query($query); 
    $row = $result->fetch_assoc(); 
    if($row) 
    { 
    echo $row['content']; 
    } 
echo "no results founded"; 
    ?> 
Смежные вопросы