Erreur lors d'une vérification sql

Par Alex, il y a 10 ans


Salut tout le monde,

aujourd'hui j'ai un problème avec l'un de mes codes:
Voici le code:

} else { $check = $this->db->prepare('SELECT COUNT(email) FROM comptes WHERE email = ? AND pwd = ?', [$username, $password]); if($check['0'] == 0) { // La verification qui devrait être à 0 si le mot de passe est faux ou l'email return ["reponse" => "nok", "msg" => $lang['badinfo']]; // Reponse } else { return $this->loginin($username, $password); // Dans le cas où c'est le bon donc $check = 1, cela envoie ailleur. } }

Donc mon problème est le suivant:

Merci pour la futur aide en tous cas.

12 réponses

Carouge10, il y a 10 ans

bonjour,
qu'affiche un var_dump($check) ?

Alex, il y a 10 ans

Cela affiche la version 1 ou 0 si c'est bon, c'est juste lorsque la vérification se fait que ça foire...

array(1) { [0]=> object(stdClass)#6 (1) { ["COUNT(email)"]=> string(1) "0" } }
Carouge10, il y a 10 ans

oui puisque c'est pas un boolean mais un objet

} else { $check = $this->db->prepare('SELECT COUNT(email) as nbr FROM comptes WHERE email = ? AND pwd = ?', [$username, $password]); $check = $check->fetch(PDO::FETCH_OBJ); // A vérifier if($check->nbr == 0) { // La verification qui devrait être à 0 si le mot de passe est faux ou l'email return ["reponse" => "nok", "msg" => $lang['badinfo']]; // Reponse } else { return $this->loginin($username, $password); // Dans le cas où c'est le bon donc $check = 1, cela envoie ailleur. } }
Alex, il y a 10 ans

Du coup maintenant, j'ai cette érreur:
Parse error: syntax error, unexpected '0' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in *** on line 29
[ if($check->0 == 0) { ]

Carouge10, il y a 10 ans

oui, on check pas 0 mais nbr comme j'ai marqué

Alex, il y a 10 ans

Je fais $check->nbr... Mais ça ne marche toujours pas ? C'est vraiment nbr qu'il faut marquer?

Carouge10, il y a 10 ans

oui,
que vaut $check avant le if ?

Alex, il y a 10 ans

Bah il vaut 0 mais ça fait comme s'il valait 1....
Au passage j'ai echo $check->nbr, et ça ne vaut rien...

Alex, il y a 10 ans

Le problème est toujours percistant malgré l'essai de plusieurs méthode!

thecedet, il y a 10 ans
mysql_connect($host,$dataname,$datamdp); mysql_select_db($database); $login = mysql_query("SELECT * FROM users WHERE pseudo='$pseudo' AND email='$email' AND mdp='$mdp'"); $rowsLOGIN = mysql_num_rows($login); if($rowsLOGIN == 1) { }
thecedet, il y a 10 ans

C'est un morceau de code qui est plus simple mais tu as le princecipe mainteant

Alex, il y a 10 ans

C'est une solution de facilité qui ne m'intéresse pas, puisque ça fait faire un SELECT des données utilisateurs qui n'est pas mon but.... Merci tout de même de la réponse.