Comment vérifier si un mysql instruction select résultat a une valeur ou pas en php?
J'ai une zone de texte UserName
et un Check Availability
bouton à côté de lui..... J'ai vérifié la disponibilité en passant UserName
zone de texte valeur..... Mais il ne semble pas fonctionner....
Ici est ce que je fais?
echo $UserName = $_GET['CheckUsername'];
$_SESSION['state'] = $State;
$queryres = "SELECT dUser_name FROM tbl_login WHERE dUser_name='$UserName'";
$result = mysql_query($queryres,$cn) or die("Selection Query Failed !!!");
if($result==true) //this condition doesn't seem to work
{
echo "User Name Available";
}
else
{
echo "Sorry user name taken";
}
OriginalL'auteur udaya | 2010-05-08
Vous devez vous connecter pour publier un commentaire.
Veillez à vous échapper de vos entrées pour MySQL. La transmission des données directement à partir de
$_GET
,$_POST
ou l'un des autres superglobales est dangereux.OriginalL'auteur awgy
La raison vôtre ne fonctionne pas est parce que la valeur de $résultat ne sera pas le cas car il contient un tableau. Vous pourriez le faire par l'inversion de la déclaration de vérifier pour faux en premier.
Vous pouvez aussi le faire avec mysql_num_rows
Warning: Wrong parameter count for mysql_num_rows()
Ouais, désolé. Quelle que soit la méthode devrait fonctionner maintenant.
Ne serait pas if ($result === false) plus précis?
OriginalL'auteur Gazler
de http://php.net/mysql_query :
Donc, pour commencer avec, si votre déclaration ne sera jamais à false, parce que vous avez le "or die" sur la mysql_query (qui est activé lorsque mysql_query renvoie false).
Mais si votre état est complètement faux, parce que tu ne veux pas savoir si la requête a échoué, mais si des résultats ont été retournés. Pour cela, vous voudrez probablement utiliser mysql_num_rows.
Comme une petite astuce, car vous avez seulement besoin de savoir si il y a 1 correspondance nom d'utilisateur, ajouter "LIMIT 1" à la fin de votre requête. Puis mysql sera de retour dès qu'elle touche le premier match, au lieu de chercher th ensemble de la table pour plus de résultats.
Comme une méthode alternative, vous pouvez utiliser un COUNT() de la requête, et de vérifier le nombre retourné dans le jeu de résultats.
LIMIT 1
est nécessaire si la colonne que vous soyez à la recherche est unique. Mais je suppose qu'il ne fait pas de mal et pourrait aider à en faire une habitude.OriginalL'auteur AllenJB
Que cette question a déjà une réponse adéquate, je vais vous donner une autre option. Retirez simplement le "==true" dans la condition if et il va automatiquement détecter la présence d'une valeur à la place d'un booléen comparaison.
Vous pouvez utiliser cette option si vous souhaitez conserver la signature de votre code.
OriginalL'auteur walkthroughthecloud
Après l'Exécution de la Requête mysql_num_rows($result) qui va vous retourner le nombre de Lignes est récupérée.
OriginalL'auteur Saraf Sissddharth
OriginalL'auteur Ranjith