[RESOLU] PDO::FETCH_OBJ : Trying to get property of non-object in

Eléphant du PHP | 386 Messages

31 déc. 2016, 00:26

Salut,

J'ai une requête qui doit retourner normalement un objet :

Code : Tout sélectionner

<?php $user = $db->query('SELECT * FROM users WHERE (username = :username OR email = :username)', ['username' => $username])->fetch(PDO::FETCH_OBJ); if(password_verify($password, $user->password)){ $this->connect($user); return $user; } else { return false; } ?>
Si je met "$user['password']" ça fonctionne..

L'erreur est à la ligne de la condition : "Trying to get property of non-object in" pourtant je précise bien le paramètre FETCH_OBJ.
Et j'ai précisé ce paramètre dans la classe de connexion à la base de donnée.
Ma version de php est 5.6.
Je ne comprend pas ..

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7256 Messages

31 déc. 2016, 20:26

Bonjour,

Le message d'erreur indique que tu essayes de lire une propriété d'une variable qui n'est pas un objet.
A la ligne que tu mentionnes, c'est donc que $user n'est pas un objet.

Le point de départ de ton débogage est donc de faire un var_dump() de $user pour savoir ce qu'il y a dedans et de remonter jusqu'à l'erreur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 386 Messages

02 janv. 2017, 05:58

J'ai réussi en insérant une condition avant la fonction password_verify :

Code : Tout sélectionner

if($user){ if(password_verify($password, $user->password)){ $this->connect($user); return $user; } else { return false; } } else { return false; }
Plus de message d'erreur :wink:
Pourtant, je ne comprend toujours pas pourquoi ^^