Page 1 sur 1

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

Posté : 31 déc. 2016, 00:26
par nico44530
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 ..

Re: PDO::FETCH_OBJ : Trying to get property of non-object in

Posté : 31 déc. 2016, 20:26
par @rthur
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.

Re: PDO::FETCH_OBJ : Trying to get property of non-object in

Posté : 02 janv. 2017, 05:58
par nico44530
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 ^^