AOP - Appel à un membre de la fonction fetch() sur un non-objet
Mon erreur:
( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\PDO\index.php on line 13
Mon code:
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'learnpdo'
);
$db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$query = $db->query("SELECT articles . title FROM articles");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['title'];
}
Je sais qu'il y a beaucoup de questions, mais aucune réponse ne semble pas fonctionner.
Grâce
EDIT:
Ci-dessus est résolu, merci à tout le monde ci-dessous. 🙂 Maintenant j'ai une autre erreur:
Notice: Undefined index: id in C:\wamp\www\PDO\index.php on line 7
Voici ma base de données:
Voici mon code:
$db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', 'root', '');
$query = $db->query("SELECT `articles`.`title` FROM `articles`");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['id'];
}
- Cette erreur signifie presque toujours que votre requête ne fonctionne pas comme vous le voudriez, et comme un résultat
$query
estnull
(ou faux?) et non pas le résultat d'une requête de l'objet. - Merci pour la réponse rapide. Le problème est, je ne sais pas quel est le problème avec la requête. Les articles de la table existe, tout comme les titres de colonne. Désolé pour le désagrément, c'est ma première fois en utilisant PDO.
- J'ai posté un couple de base de débogage suggestions dans ma réponse, ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Au lieu de:
Essayer:
modifier
Essayer:
$db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', 'root', '');
mais maintenant j'ai Undefined index: id in C:\wamp\www\PDO\index.php sur la ligne 14PDO::query()
retournefalse
(qui, évidemment, est un non-objet) si la requête échoue. Donc, c'est votre problème. Votre requête comporte une erreur.Je vous recommande de définir le mode d'erreur dans l'AOP.
et ensuite de prendre l'erreur pour voir quel est le problème avec votre requête.
Les différents modes d'erreur qui existe est
PDO::ERRMODE_SILENT
,PDO::ERRMODE_WARNING
etPDO:ERRMODE_EXCEPTION
. Vous pouvez lire à leur sujet dans le Manuel PHP sur PDO. Sachant comment déboguer lors de l'écriture de SQL est important et la la clé pour ne pas avoir à se poser ce genre de questions.Au sujet de votre autre problème
Tu dois sélectionner la colonne id si vous voulez l'utiliser.
ou
Cette erreur signifie presque toujours que votre requête ne fonctionne pas comme vous le voudriez, et comme un résultat de la requête $est la valeur null (ou faux?) et non pas le résultat d'une requête de l'objet. Essayez écho
db->errorinfo()
et voir si elle vous dit ce qui n'allait pas.Vous pouvez également essayer de coller le texte de votre requête dans mysql directement et de voir quel sera le résultat. Si cela semble fonctionner correctement, le problème peut être avec votre base de données de code de connexion.