Probleme php/MySQL : "Warning mysql_num_rows()"

Probleme php/MySQL : "Warning mysql_num_rows()" - PHP - Programmation

Marsh Posté le 21-03-2005 à 13:30:00    

bonjour, j'ai un probleme avec ce code .php qui fait appel à du sql:
 

Code :
  1. <?
  2. // on recupere les données d'une anim flash  
  3. $pseudo= $_POST["pseudo"];
  4. $mdp = $_POST["mdp"];
  5. //on se connecte à la base de donnée
  6. $db = mysql_connect('sql.free.fr','monsite','monmotdepasse') or die ("erreur de connexion à monsite" );
  7. //on selectionne votre base
  8. mysql_select_db('nomdelabase',$db) or die ("erreur de connexion à la base de donnée" );
  9. // On selectionne quand le champs pseudo de labase correspond au pseudo entré dans le flash.
  10. $sql = "SELECT * FROM nomdelabase WHERE pseudo=$pseudo";
  11. // On execute la requête de selection  
  12. $res = mysql_query($sql); 
  13. // On compte le nombre de ligne des resultats  
  14. // 1 : si valide ; 0 : si aucun pseudo ne correspond  
  15. $exist = mysql_num_rows($res);
  16. // Si la variable $exist = 0 --> pseudo inexistant
  17. if(!$exist) {
  18.     // On affiche ce message d'erreur  
  19.     echo "pseudo inexistant";
  20. }
  21. // Sinon, si le pseudo est valide
  22. else {
  23. echo "pseudo existant";
  24. }
  25. //et on referme la connexion
  26. mysql_close();


 
lorsque je lance mon anim flash et rentre un pseudo (qu'il figure dans ma base ou non), je reçois tout le temps cette erreur :
 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/8/8/monsite/monfichier.php3 on line 21
 
 
 
merci à ceux qui savent de m'eclairer sur mon probleme  :jap:  
 
Cruzy

Reply

Marsh Posté le 21-03-2005 à 13:30:00   

Reply

Marsh Posté le 21-03-2005 à 13:56:53    

C'est ta requete qui ne marche pas (au niveau du mysql_query) ;)
 
Regarde du coté de mysql_error()

Reply

Marsh Posté le 21-03-2005 à 14:01:21    

mysql_error() me dit que c'est au niveau de la ligne 14 que ca va pas ($sql = "SELECT * FROM nomdelabase WHERE pseudo=$pseudo";  )
 
mais je ne vois pas mon erreur :-(


Message édité par cruzy le 21-03-2005 à 14:02:01
Reply

Marsh Posté le 21-03-2005 à 14:07:02    

($sql = "SELECT * FROM nomdelabase WHERE pseudo='$pseudo';";  )


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-03-2005 à 14:08:04    

et d'ailleurs c'est pas nomdelabase  mais nomdelatable !!!


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-03-2005 à 15:46:27    

cruzy a écrit :

mysql_error() me dit que c'est au niveau de la ligne 14 que ca va pas ($sql = "SELECT * FROM nomdelabase WHERE pseudo=$pseudo";  )
 
mais je ne vois pas mon erreur :-(


C'est quoi le message d'erreur complet ?

Reply

Marsh Posté le 21-03-2005 à 15:55:16    

simogeo a écrit :

($sql = "SELECT * FROM nomdelabase WHERE pseudo='$pseudo';";  )

bien vu pour les quotes mais il y a un ; en trop  ;)  

Reply

Marsh Posté le 22-03-2005 à 01:26:25    

soju a écrit :

bien vu pour les quotes mais il y a un ; en trop  ;)


[:neo_xp]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 22-03-2005 à 07:38:24    

c'est bon , j'ai trouvé mon erreur, ce n'etait pas une histoire de ";" mais j'avais un probleme de sendAndLoad dans mon animation flash, ce qui fait que ma variable $pseudo n'etait pas prise en compte
 
merci à tous quand meme :-)
 
Cruz

Reply

Marsh Posté le 22-03-2005 à 16:42:03    

Deja ce qui est propre est :
 

Code :
  1. $sql = "SELECT * FROM nomdelabase WHERE pseudo='".$pseudo."'";


 
enfin je dis ca, je dis rien :p

Reply

Marsh Posté le 22-03-2005 à 16:42:03   

Reply

Marsh Posté le 22-03-2005 à 19:38:29    

Tout à fait daccord avec toi fnemo sinon on risque de se retrouver avec des erreur au niveau des nom de varaible. Peut être pas dans ce cas mais ca pourrait bien arriver.
 

soju a écrit :

bien vu pour les quotes mais il y a un ; en trop  ;)


Une requête en SQL "conforme" doit se terminer par un ;
Il n'est pas indispensable sur MySQL mais ne géne en rien l'exécution normale de la requête.


Message édité par dwogsi le 22-03-2005 à 19:40:05

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 22-03-2005 à 19:47:46    

fnemo a écrit :

Deja ce qui est propre est :
 

Code :
  1. $sql = "SELECT * FROM nomdelabase WHERE pseudo='".$pseudo."'";


 
enfin je dis ca, je dis rien :p


Et si je tape comme pseudo :

' OR 1=1 OR pseudo='


;)
La requête va donner un truc du genre :

SELECT * FROM nomdelabase WHERE pseudo='' OR 1=1 OR pseudo=''


Et comme il compte le nombre d'enregistrement, ça va marcher... Donc ne jamais oublier un petit addslashes($pseudo)

Reply

Marsh Posté le 22-03-2005 à 19:56:49    

ué enfin, ca sort du cadre là ...
ces tests doivent être fait précédemment [:clark_gaybeul]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed