[PHP] comment tester si une requête ne donne pas de résultat

comment tester si une requête ne donne pas de résultat [PHP] - PHP - Programmation

Marsh Posté le 03-02-2004 à 11:17:51    

Code :
  1. $sql="SELECT *
  2.         FROM parcours
  3.         WHERE position=$i
  4.         AND hit=$max";
  5.   $rs=mysql_query($sql);
  6.   while($tab=mysql_fetch_array($rs))
  7.   {
  8.     //traitement
  9.     ...
  10.   }


 
voila ma requete, en fait qd $i est plus grand  que ce ki existe dans ma table ma requete ne r'envoie rien (normal quoi)
 
mais mon prob c'est que je trouve pas de solution pour savoir si ma requete ne renvoie rien.
 
j'ai testé avec mysql_num_rows mais il renvoie 1 alors qu'il n'y a pas de résultat à ma requête sql !
 
et ensuite $tab=mysql_fetch_array($rs)) plante la mentablament, normal vu ke y a pas de réponse à la requête ... :sarcastic:  
 
donc je cherche une fonction php qui permettte de testé si ma requête renvoie un résultat !
 

Reply

Marsh Posté le 03-02-2004 à 11:17:51   

Reply

Marsh Posté le 03-02-2004 à 11:27:40    

mysql_num_rows($rs) te renvoie le nombre de ligne de résultat donc si ça retourne 1 c'est que t'as forcément une ligne
 

Code :
  1. $sql = '....';
  2. if ($rs = @mysql_query ($sql)) {
  3.   if (@mysql_num_rows($rs)>0) {
  4.     while ($tab = mysql_fetch_array($rs)) {
  5.       //traitement
  6.     }
  7.   }
  8.   else {
  9.     echo 'Aucun ligne à afficher';
  10.   }
  11. else {
  12.   echo 'Erreur MySQL : '.mysql_error();
  13. }


Message édité par Sh@rdar le 03-02-2004 à 11:28:07

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 03-02-2004 à 11:28:55    

nemohp a écrit :

...
 
et ensuite $tab=mysql_fetch_array($rs)) plante la mentablament, normal vu ke y a pas de réponse à la requête ... :sarcastic:  
 
...

Ah non, mysql_fetch_array() ne plante pas s'il n'y a pas de résultat. Tu confonds une requête fausse (syntaxe...) et une requête juste mais renvoyant 0 résultats.
 
$rs = mysql_query($sql);
if (! $rs) {
    echo "Erreur requete";
} else {
    // traitements ....
 
}


Message édité par mrbebert le 03-02-2004 à 11:29:40
Reply

Marsh Posté le 03-02-2004 à 11:53:32    

Sh@rdar a écrit :

mysql_num_rows($rs) te renvoie le nombre de ligne de résultat donc si ça retourne 1 c'est que t'as forcément une ligne


 
non ce n'est pas une erreur de syntax, car ma requete tan ke le parametre $i est inférieur à 11 (ça valeur max dans la table) ben ca marche, mais apres ca déconne  

Reply

Marsh Posté le 03-02-2004 à 11:55:00    

mrbebert a écrit :

Ah non, mysql_fetch_array() ne plante pas s'il n'y a pas de résultat. Tu confonds une requête fausse (syntaxe...) et une requête juste mais renvoyant 0 résultats.
 
$rs = mysql_query($sql);
if (! $rs) {
    echo "Erreur requete";
} else {
    // traitements ....
 
}


 
je ne comprend pas moi aussi, d'habitude ya  pas de problème , ma syntaxe est bonne !!!

Reply

Marsh Posté le 03-02-2004 à 11:55:59    

voilà l'erreur :
 

Code :
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\développement\easyphp1-7\www\magasin ampc\admin\stat_view.php on line 183


 
 

Reply

Marsh Posté le 03-02-2004 à 12:00:45    

ayé c bon je viens de trouver l'erreur !   [:aless]  
 
en effet c t bien la requete, enf aite la varibale $max était parfois non-déclaré suivant un traitement précédent
 
du coup j'ai plus qu'a faire :
 

Code :
  1. if ( isset($max) )
  2. {
  3.   //traitement
  4.   ...
  5.   }


 
merci de votre aide les gas  :jap:

Reply

Marsh Posté le 03-02-2004 à 14:32:03    

C'est pourquoi il faut toujours tester le résultat d'un mysql_query avant de faire appel à des fonctions de traitement de resultats (mysql_fetch_*). :)

Reply

Sujets relatifs:

Leave a Replay

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