Warning: mysql_num_rows() expects parameter 1 to be resource...

Fermé
pulbaas Messages postés 4 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 15 janvier 2015 - Modifié par crapoulou le 15/01/2015 à 08:32
 Utilisateur anonyme - 16 janv. 2015 à 18:08
bonjour a tous
n'etant pas du tout à l'aise avec php, ca m'arrache les cheveux sur un probleme survenu apres une migration de serveur (passage de php 5.3 a php 5.4):
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/eskissfrwj/xxx.com/fonction.php on line 129

voici le code en question (en gras la ligne 129)

// Affiche les "$nb" top a partir de "$start"
function tableau_top($start,$nb,$idcat)
{ //affiche les $nb sites envoyant le plus de traff a partir du $depart
 // Créé un tableau contenant les valeurs pour chaque site
 if($idcat==0)
 {
  $sql="select * from sites where structure='gratuit' ";
 }else
 {
  $sql="select * from sites where categories=".$idcat." and structure='gratuit' ";
 }
 $sql.="and statut='on' order by nbin DESC, date_inscription desc LIMIT ".$start.",".$nb;

 $query = mysql_query($sql);
<bold> $num_row=mysql_num_rows($query);</bold>
 if($num_row>0){
  $i=0;
  while ($tab= mysql_fetch_array($query, MYSQL_ASSOC)) {
   $tab_site[$i]['id']=$tab['id'];
   $tab_site[$i]['categories']=$tab['categories'];
   $tab_site[$i]['titre']=$tab['titre'];
   $tab_site[$i]['url']=$tab['url'];
   $tab_site[$i]['description']=str_replace('"','\"',$tab['description']);
   $tab_site[$i]['image']=$tab['image'];
   $tab_site[$i]['image_popup']=$tab['image_popup'];
   $tab_site[$i]['in']=$tab['nbin'];
   $tab_site[$i]['out']=$tab['nbout'];

   $i++;
  }
 }

 if($num_row<$nb)
 {
  $b=1;
  $nb_restant = $nb-$num_row;

  for($j=0;$j<=$nb_restant;$j++)
  {

   $tab_site[$j+$i]['id']=0;
   $tab_site[$j+$i]['categories']="";
   $tab_site[$j+$i]['titre']="Clique ICI";
   $tab_site[$j+$i]['url']="boost.php";
   $tab_site[$j+$i]['description']="Clique ICI";
   $tab_site[$j+$i]['image']="blinds/".$b.".jpg";
   $tab_site[$j+$i]['image_popup']="blindspop/".$b.".jpg";;
   $tab_site[$j+$i]['in']=0;
   $tab_site[$j+$i]['out']=0;
   $b++;
  }
 }

 if(!isset($tab_site)) $tab_site=NULL;
 unset($i);
 return $tab_site;
}


une solution ? :)
merci !

2 réponses

Utilisateur anonyme
15 janv. 2015 à 09:17
Bonjour

Fais-nous aussi un
 $query = mysql_query($sql) or die(mysql_error());

Ça nous donnera des précisions sur l'erreur.
2
Utilisateur anonyme
15 janv. 2015 à 11:49
Du coup, pulbaas oublie le : )

die();

Cdt
0
Utilisateur anonyme
15 janv. 2015 à 08:21
Bonjour,

avant les lignes

$query = mysql_query($sql);
$num_row=mysql_num_rows($query); 

pourrais tu nous faire un

echo $sql;
die();


histoire de vrifier que ta requête SQL est bien forméee ?

Cdt
0
Si la requête à un probleme alors $sql sera égal à False ce qui cadre pas si mal avec l'erreur décrite

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given

: )
0
Utilisateur anonyme > Utilisateur anonyme
16 janv. 2015 à 13:53
Il est clair que mysql_query rend false.
Ça peut être dû à un problème de connexion et mysql_error() le dira.
Ça peut être dû à un problème de sélection de base de données et mysql_error() le dira.
Ça peut être dû à un nom de table ou de champ erroné et mysql_error() le dira.
Tout ceci sans aucune erreur de syntaxe SQL.
Ça peut aussi être une erreur de syntaxe SQL et mysql_error() nous dira à quel endroit de la requête il la détecte.
Sans parler des causes auxquelles je ne pense pas
:)
0
Utilisateur anonyme > Utilisateur anonyme
Modifié par ludobabs le 16/01/2015 à 18:18
Merci pour ces précisions le pere. : )

J'avais commencé à lister les causes probables dans mon aparté sur $sql = false mais il y en avait tellement que j'ai réduit au maximum ^^
0