PHP - Requete sur 2 champs dans une même table - Programmation
Marsh Posté le 12-02-2001 à 16:23:24
Tu es tombé sur une erreur toute conne!
Tu as mis tes 2 variables $password et $login entre guillemets simples! Le moteur de php va donc interpréter ceci en envoyant comme valeurs à Mysql les chaines de caractèeres '$password' et '$login' et non leurs valeurs respectives! Tu mes suis?
C'est donc normal que Mysql ne renvoie aucun résultat (ça m'étonnerai que qqun s'amuse à s'appeller $login! ).
Pour que php envoie les valeurs de $password et $login, il faut que tu les mettes entre doubles guillemets. C'est tout!
Le fait que les variables soient prises comme chaine de caractères ou non, ça a un nom... mais j'ai oublié!
Sinon dernière chose, fait un test pour voir si Mysql renvoie qqchose avant d'utiliser le résultat!
Marsh Posté le 12-02-2001 à 16:31:57
Attends je t'ai dit une connerie!
Enfin c'est vrai mais c'est pas ton cas!!
Les guillemets de $password et $login sont utilisés par Mysql et envoyés seulement par php! Il faut donc que Php les ignore et c'est que tu devais penser en ayant mis les guillemets simples! Mais en fait tu dois mettre \", ce qui donne :
$requete = mysql_query("SELECT * FROM login_tbl WHERE password = \"$password\" AND login =\"$login\"" );
Marsh Posté le 12-02-2001 à 19:59:53
ben...je suis pas sur que ce soit ça l'erreur...
Moi j'ai des requêtes avec : WHERE id='$id' qui marchent parfaitement...
(Je sais pas si ça a une grande importance, mais essaie d'enlever les espaces entre password et = et idem pour login...)
Autrement ben...y'a pas d'erreur à mes yeux...
Marsh Posté le 12-02-2001 à 20:42:44
ouai vire les espaces chez moi je fais pareil que toi et ça marche impeck
Marsh Posté le 13-02-2001 à 15:24:09
EDWIGE a écrit a écrit : Je pensais que c'était simple, mais non, j'obtiens une erreur... HELP !!! En gros, je veux savoir si l'utilisateur a entré le bon mot de passe... $requete = mysql_query("SELECT * FROM login_tbl WHERE password = '$password' AND login ='$login'" ); $resultat = mysql_numrows($requete); J'obtiens le message d'erreur: Warning: 0 is not a MySQL result index in c:\autres\logiciels\quickphp\www\booksmart\frame_verification_inscription.php3 on line 22 |
La requête semble bonne. Je pense qu'en fait elle ne retourne pas de valeur et un peu plus loin dans le code, tu cherche les valeurs de la première ligne retournée. Au fait, qu'y a t'il à la ligne 22 de ton code. Je te le demande car c'est sur cette ligne que l'erreur apparaît.
Marsh Posté le 13-02-2001 à 16:36:47
ta requête semble bonne... tu es sûr de pas t'être trompé dans les noms de champs / de table ?
par ailleurs la syntaxe c mysql_num_row() et pas mysql_numrows !
(mais c pas ça le pb au vu de ton erreur)
Marsh Posté le 13-02-2001 à 23:30:46
moi je suis de l'avis de omega2, ta requette est bonne mais ya rien en réponse essai de mettre
$qte = mysql_numrows($requete)
if ($qte!=0){
//ton code
}
else {
echo "c vide";
}
avec ca tu n'aura plus d'erreur
j'ai eu le même pb...
Marsh Posté le 14-02-2001 à 18:01:17
SteF_DOBERMANN>vu le message d'erreur retourné pas MySQL c un pb de syntaxe de la requête et pas un pb parce que la requête ne renvoie aucun résultat.
d'ailleurs y'a encore + simple pr ton code pr éviter les erreurs :
$qte = mysql_numrows($requete)
if (!$qte){
//ton code
}
....
Marsh Posté le 15-02-2001 à 14:59:35
Zebra3 a écrit a écrit : SteF_DOBERMANN>vu le message d'erreur retourné pas MySQL c un pb de syntaxe de la requête et pas un pb parce que la requête ne renvoie aucun résultat. d'ailleurs y'a encore + simple pr ton code pr éviter les erreurs : $qte = mysql_numrows($requete) if (!$qte){ //ton code } .... |
Correction, le message d'erreur ne vient pas de mysql mais du serveur php.
Si tu lis bien le message d'erreur, il donne le chemin du fichier php or mysql ne connait pas le nom du fichier php exécuté. Mysql ne connait que le programme appellant (en général le serveur html), la requête à exécuter et les données de la base.
Quand mysql affiche un message d'erreur, il donne au moins la ligne de la requête où se situe l'erreur et souvant la partie de la requête qui se situe après l'erreur afin de premêtre une recherche plus rapide du problème.
A+.
Marsh Posté le 12-02-2001 à 15:18:47
Je pensais que c'était simple, mais non, j'obtiens une erreur... HELP !!!
En gros, je veux savoir si l'utilisateur a entré le bon mot de passe...
$requete = mysql_query("SELECT * FROM login_tbl WHERE password = '$password' AND login ='$login'" );
$resultat = mysql_numrows($requete);
J'obtiens le message d'erreur:
Warning: 0 is not a MySQL result index in c:\autres\logiciels\quickphp\www\booksmart\frame_verification_inscription.php3 on line 22