[MySQLi] Nombre d'enregistrements retournés

dav
Invité n'ayant pas de compte PHPfrance

29 janv. 2008, 22:50

Bonjour, j'ai le problème suivant Trying to get property of non-object , pourtant j'ai suivit la syntax indiqué dans le manuel.

voici mon code :

Code : Tout sélectionner

private $mMysqli; function __construct() { $this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); } private function rowcount($nom, $pass) { //vérifie si l'utilisateur existe en base $result = $this->mMysqli->query('SELECT count(*) as nbres FROM user '. 'WHERE user_name="'.$nom.'" AND user_password="'.$pass.'"'); $row_cnt = $result->num_rows; ... }
Apparement il ne considère pas $result comme un objet. Pourtant query retourne bien un objet d'aprés la doc.
Merci de l'aide

Eléphant du PHP | 259 Messages

29 janv. 2008, 23:45

Hello,

echo $this->mMySqli->error donne quoi ?

Invité
Invité n'ayant pas de compte PHPfrance

30 janv. 2008, 20:29

Merci cela m'a effectivement donné une erreur explicite, je peux donc corriger maintenant, ce qui ne va pas.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

31 janv. 2008, 15:41

Attention, d'après ton exemple la valeur de num_rows sera toujours 1, puisque ta requête renvoit exactement 1 ligne à cause de la fonction COUNT(*), même si celui-ci est égal à 0.

Retire le COUNT(*) de ta requête et remplace-le par une valeur quelconque si tu veux vérifier l'existence d'un compte utilisateur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 janv. 2008, 16:34

Le num_rows n'a effectivement pas d'intérêt ici, mais personnellement je trouve plus logique de compter le nombre d'enregistrements trouvés en base et de tester la valeur de "nbres", que de ramener le champ cherché ou tout autre donnée inutile juste pour savoir s'il y a ou pas des enregistrements correspondants :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...