php fetch Erreur while fetch

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour

Je suis en train de suivre un cour de PHP et je me retrouve coincé à l'ouverture de ma page avec :

Fatal error: Uncaught Error: Call to a member function fetch() on boolean in C:\xampp\htdocs.....\admin\index.php:35 Stack trace: #0 {main} thrown in C:\xampp\htdocs\burgercode\admin\index.php on line 35

J ai vérifié l'écriture lettre après lettre et je n arrive pas à trouver mon erreur , pourriez vous me donner un coup de main

En vous remerciant par avance

ci dessous mon code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
require 'Database.php';
$db = database::connect();
$statement = $db->query('SELECT items.id, items.name, items.description, items.price, category.name AS category FROM items LEFT JOIN categories ON items.category=categories.id ORDER BY items.id DESC');
while($item = $statement->fetch())
{
    echo '<tr>';
    echo '<td>'. $item['name'] .'</td>';
    echo '<td>'. $item['description'] .'</td>';
    echo '<td>'. $item['price'] .'</td>';
    echo '<td>'. $item['category'] .'</td>';    
    echo '</tr>';           
}

?>
+0 -0
Auteur du sujet

Merci pour la réponse , J ai pas trouvé l'erreur pour autant , d’où peut elle venir, de mon fichier de connexion sur la base ?

ci joint le code de connexion

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php

class Database
{

    private static $dbHost = "localhost";
    private static $dbName ="burger_code";
    private static $dbUser = "root";
    private static $dbUserPassword = "";

    private static $connection = null;


    public static function connect()
    {
            try
            {
                self::$connection = new PDO("mysql:host=" . self::$dbHost . ";dbName=" . self::$dbName,self::$dbUser,self::$dbUserPassword);
            }
            catch(PDOException $e)
            {
                    die($e->getMessage());
            }
            return self::$connection;
    }       

        public static function disconnect() 
        {
            self::$connection = null;
        }

}



?>
+0 -0

J'imagine que la ligne 35 de ton index.php est la ligne 5 de ton extrait de code ?

Tu as quoi quand tu actives les erreurs ?

1
2
3
<?php
// ajoute ça après la ligne 18 de ton second extrait de code
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Édité par tleb

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0
Auteur du sujet

merci pour ta réponse

J'ai ajouté la ligne

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php

class Database
{

    private static $dbHost = "localhost";
    private static $dbName ="burger_code";
    private static $dbUser = "root";
    private static $dbUserPassword = "";

    private static $connection = null;


    public static function connect()
    {
            try
            {

                self::$connection = new PDO("mysql:host=" . self::$dbHost . ";dbName=" . self::$dbName,self::$dbUser,self::$dbUserPassword);
                self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }


            catch(PDOException $e)
            {
                    die($e->getMessage());
            }
            return self::$connection;
    }       

        public static function disconnect() 
        {
            self::$connection = null;
        }

}



?>

ligne 36 correspond

1
2
ORDER BY items.id DESC');
                                                while($item = $statement->fetch())

en réponse : Fatal error: Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\xampp\htdocs\burgercode\admin\index.php:36 Stack trace: #0 C:\xampp\htdocs\burgercode\admin\index.php(36): PDO->query('SELECT items.id…') #1 {main} thrown in C:\xampp\htdocs\burgercode\admin\index.php on line 36

+0 -0

dbname au lieu de dbName : je n'ai pas souvenir que les noms des paramètres du DSN soient insensibles à la casse auquel cas il ignorerait purement et simplement ce paramètre, te retrouvant sans base de données courante.

EDIT : PDO utilise strncmp pour trouver les (noms des) paramètres donc c'est sûr qu'ils ne sont pas case insensitive

Édité par vibrice

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte