2016-02-27 10 views
7

Im ottenendo l'errore sopra riportato quando si esegue hte sotto il codice per visualizzare le prenotazioni effettuate da un database.Chiamata a una funzione membro fetch_assoc() su booleano in <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> 

Ho solo iniziato a ricevere l'errore quando ho iniziato a ospitarlo dal vivo, sul mio personal computer funziona perfettamente. E anche la connessione del databse funziona bene.

+0

Sì, ho provato anche questo e lo stesso problema. – dhool

+0

Ho provato il tuo codice, sta funzionando per me, controlla il tuo database e la query? – C2486

+0

Quale output si ottiene dopo $ result = $ conn-> query ($ sql); print_r ($ result); – C2486

risposta

-1

Si prega di utilizzare se condizione con ciclo while e provare.

es.

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

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

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

I treid il tuo suggerimento e che ora rimuove l'errore ma nessun output viene emesso e le loro sono sicuramente voci nel database da emettere. – dhool

8

Procedimento interrogazione può restituire false invece di un set di risultati nel caso ci sia un errore. Questo è il motivo per cui si ottiene l'errore sulla chiamata al metodo fetch_assoc, che ovviamente non esiste quando $ risultato è false.

Ciò significa che si è verificato un errore nell'istruzione SELECT. Per ottenere tale errore visualizzato, fare questo:

$result = $conn->query($sql) or die($conn->error); 

Molto probabilmente si ha una grafia sbagliata per il nome della tabella o un nome di colonna. Forse quando ci si sposta verso l'host non si è creato correttamente quel tavolo e si è commesso un errore di ortografia.

Si dovrebbe infatti vedere lo stesso errore quando si esegue la stessa query tramite phpAdmin.

Inoltre, sostituire questa linea:

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

con un semplice:

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

Si potrebbe anche aggiungere questo per il debugging:

echo "number of rows: " . $result->num_rows; 
+0

OK, così ho contribuito al fatto che stavo collegando il nome del database sbagliato, risolto ma sempre lo stesso in quanto non viene emesso alcun output. Il "o die ($ conn-> error)" ora non restituisce altro che im confuso sul motivo per cui nessuna voce non viene visualizzata. – dhool

+0

Qual è l'output quando si esegue SELECT direttamente in phpAdmin (assicurarsi di essere sul server giusto)? – trincot

-1

è necessario aggiornare il file php.ini config file nel server del tuo host provider, fidati di questo, più che probabilmente non c'è niente di sbagliato nel tuo codice. Mi ci è voluto quasi un mese e mezzo per capire che la maggior parte dei server di hosting non sono aggiornati sui file php.ini, ad es. php 5.5 o successivo, credo.

0

vedere questo codice seguente. Editare il codice in questo modo.

$query="select * from articles"; 
    $result=$conn->query($query); 
    $row = $result->fetch_assoc(); 
    if($row) 
    { 
    echo $row['content']; 
    } 
echo "no results founded"; 
    ?> 
Problemi correlati