Vérifier si une requête retourne quelque chose

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérifier si une requête retourne quelque chose

Re: Vérifier si une requête retourne quelque chose

par SinBert » 14 févr. 2010, 13:29

Bien évidemment, je le fait avec une vrai requête :)
Je ne l'avait pas mise car je ne la croyait pas importante pour la compréhension de mon problème.
La voici :
SELECT * FROM ts_membre WHERE name='$nom' AND password='$pass'
Dans mon cas, je veux juste savoir si l'utilisateur existe. Je ne veux pas d'autres information à son sujet.
Par conséquent, la deuxième solution est la meilleure. (prenons directement les bonnes habitudes ^^)

Ma requête finale :
SELECT COUNT(*) AS nbre_entree FROM ts_membre WHERE name='$nom' AND password='$pass'
Je viens de modifier le code source de ma page et ça marche à merveille ;)

Merci à vous deux ! =D>

*Sujet résolu*

Re: Vérifier si une requête retourne quelque chose

par Ryle » 14 févr. 2010, 11:46

Hmm... le message d'erreur indique que le résultat de ta requête n'est pas valide... donc que ta requête sql n'est pas correcte... lorsque tu fais ton test, tu le fait avec une vraie requête sql ou avec la valeur "MA REQUETE" ? :)

Pour connaitre le nombre d'enregistrements, il y a deux solutions possibles qui dépendent un peu de ce que tu veux faire.

La première, c'est celle que tu utilises : tu lances une requête qui retourne tous les enregistrements dont tu as besoin et tu utilises mysql_num_rows() pour savoir combien il y en a (cf. l'exemple de caribou). L'avantage, c'est que tu peux exploiter directement les enregistrements que tu as récupéré. L'inconvénient, c'est que si tu voulais juste savoir combien il y a de résultats, tu as charger les enregistrements de ta base pour rien.

Une autre solution consiste à modifier ta requête pour que ce soit elle qui te retourne directement (et uniquement) le nombre d'enregistrements :
$sql = mysql_query("SELECT COUNT(*) AS total FROM ma_table");
$row = mysql_fetch_assoc($sql);
echo $row['total'];
L'avantage, c'est que si j'ai 10.000 enregistrements de type longtext, je n'ai pas besoin de les charger pour connaitre leur nombre. L'inconvénient, c'est que si j'ai besoin d'afficher mes enregistrements, il me faudra faire une nouvelle requête.

A toi de voir la solution qui correspond le mieux selon tes besoins :) (alors bien sur, sur un petit nombre d'enregistrements, tu ne verras jamais la différence au niveau performance, mais avoir en tête les impacts éventuels de performances, c'est quand même une bonne habitude à prendre :))

Re: Vérifier si une requête retourne quelque chose

par caribou » 14 févr. 2010, 01:28

voici
$sql = mysql_query("SELECT * FROM horaire");
echo mysql_num_rows($sql);

Vérifier si une requête retourne quelque chose

par SinBert » 14 févr. 2010, 01:21

Bonjour à tous,

mon souci est assez simple, je cherche à savoir si quand je fais un mysql_query(), la requête me retourne une ou plusieurs entrées.
Directement j'ai pensé a mysql_num_rows().

Je fais donc ceci :
if(mysql_num_rows(mysql_query("MA REQUETE")) == false)
{
        echo 'Il n\'y a pas d\'entrée corresondante';
}
else
{
        echo 'Il y a bien une entrée correspondante';
}
D'après la doc', la fonction retourne false si il n'y a aucune entrée.

Réponse quand je lance la page :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in [...]
J'ai aussi essayé avec 0 au lieu du false, mais rien n'y fait ; malgré que je n'ai aucune entrée correspondant à ma requête, l'erreur revient.


- Comment remédier à ce problème?
- Ou alors, y a-t-il une autre solution plus simple?


Merci d'avance à tous ;)