Erreur dans ma requete

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 : Erreur dans ma requete

par Ryle » 27 sept. 2007, 13:43

Juste une petite précision, si la requête ne retourne pas de résultat, il n'y a pas d'erreur, c'est simplement qu'aucun enregistrement ne correspond. Dans ce cas, les fonctions mysql_fetch_* retournent FALSE comme lorsqu'il n'y a plus de lignes. La boucle while est alors ignorée mais aucune erreur n'est renvoyée.

Le problème vient donc bien d'une erreur sql qui fait que le résultat retourné par mysql_query() n'est pas cohérent. Voir donc effectivement de la requête en l'affichant et de mysql_error() pour en savoir plus sur l'erreur rencontrée :)

par fab » 27 sept. 2007, 12:39

Ta requete ne te retourne aucun engistrements alors tuas deux choix :
1 - soit la requete est mauvaise ( pour vérifier fait comme te la suggerer Calimero c'est à dire un echo $sql; }

2 - Soit il n'y rien de correspondant dans ta base de donnée

Pour éviter de genre de message d'erreurs tu as la fonction mysql_num_rows() :
$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
if($num_rows) {
 // on a des enregistrement et là tu peux faire ton while
} else {
 // ya pa !
}

par Invité » 27 sept. 2007, 12:16

Tu as un " */ " qui traine deux lignes plus haut....
if ($ShowByQuranID==1) {*/$Sql = "select * from quran where QuranID=$QuranID order by QuranID ASC LIMIT 1";}
Et si l'erreur est de type sql, ajoute un "or die(mysql_error())" lors de l'exécution pour savoir de quoi il s'agit :)
je l ai enleve c etait juste une faute de frappe.

voila l'erreur:

Code : Tout sélectionner

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/106/sdb/f/c/lovefriend/test/quran.php on line 33

par Ryle » 27 sept. 2007, 12:09

Tu as un " */ " qui traine deux lignes plus haut....
if ($ShowByQuranID==1) {*/$Sql = "select * from quran where QuranID=$QuranID order by QuranID ASC LIMIT 1";}
Et si l'erreur est de type sql, ajoute un "or die(mysql_error())" lors de l'exécution pour savoir de quoi il s'agit :)

par Calimero » 27 sept. 2007, 12:08

Salut,

C'est quoi "une erreur banale" ? :roll: (donne-nous le message d'erreur stp).
C'est quoi la requête exacte qui pose problème telle qu'elle est vue par MySQL ? (place un
echo $Sql;
avant le mysql_query(). )

Erreur dans ma requete

par Invité » 27 sept. 2007, 11:43

salut!

Je recois une erreur banale sur ma requete en ligne 33:
while ($Row = mysql_fetch_array($Result))
et voila les lignes qui precedent y inclu la ligne 33:
if ($ShowByPartNo==1) {$Sql = "select * from quran where PartNo=$PartNo order by QuranID ASC LIMIT 1";}
	if ($ShowBySuraNo==1) {$Sql = "select * from quran where SuraNo=$SuraNo order by QuranID ASC LIMIT 1";}
	if ($ShowByVerseNo==1) {$Sql = "select * from quran where SuraNo='$SuraNo' and VerseNo>='$VerseNo' order by QuranID ASC LIMIT 1";}
	if ($ShowByQuranID==1) {*/$Sql = "select * from quran where QuranID=$QuranID order by QuranID ASC LIMIT 1";}
	$Result = mysql_query($Sql);
	while ($Row = mysql_fetch_array($Result))
	{
	$VerseNo=$Row[VerseNo];
	$PartNo=$Row[PartNo];
	$SuraName=$Row[SuraName];
	$SuraNo=$Row[SuraNo];
	}

	$Sql = "select * from sura where SuraNo='$SuraNo'";
	$Result = mysql_query($Sql);
	while ($Row = mysql_fetch_array($Result))
	{
	// معرفة عدد ايات الصورة
	$Verses=$Row[Verses];
	}
merci pour votre aide