web-dev-qa-db-fra.com

Appel à une fonction membre fetch_assoc () sur un booléen dans <chemin>

J'obtiens l'erreur ci-dessus lors de l'exécution du code hte ci-dessous pour afficher les réservations effectuées à partir d'une base de données.

    <?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>

J'ai seulement commencé à recevoir l'erreur quand j'ai commencé à l'héberger en direct, cela fonctionne bien sur mon ordinateur. Et la connexion à la base de données fonctionne bien aussi.

10
dhool

La méthode query peut renvoyer false au lieu d'un jeu de résultats en cas d'erreur. C'est pourquoi vous obtenez l'erreur sur l'appel de méthode fetch_assoc , qui n'existe évidemment pas lorsque $ result est false.

Cela signifie que vous avez une erreur dans votre instruction SELECT. Pour afficher cette erreur, procédez comme suit:

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

Très probablement, le nom de la table ou du nom de la colonne est mal orthographié. Peut-être que lorsque vous vous êtes installé chez l'hôte, vous n'avez pas créé cette table correctement et vous y avez commis une faute d'orthographe.

Vous devriez en fait voir la même erreur lorsque vous exécutez la même requête via phpAdmin.

Aussi, remplacez cette ligne:

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

avec juste:

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

Vous pouvez également ajouter ceci pour le débogage:

echo "number of rows: " . $result->num_rows;
15
trincot

Cette erreur se produit généralement lorsque les tables de la requête n'existent pas. Il suffit de vérifier l'orthographe de la table dans la requête, et cela fonctionnera.

4
ASammour

voyez ce code suivant, éditez votre code comme ça.

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