You have an error in your SQL syntax - Erreur dans ma requete

cs_christuckers Messages postés 75 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 26 mars 2010 - 25 mars 2010 à 15:23
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 26 mars 2010 à 16:58
Bonjour a tous ceux qui me liront aujourd'hui.

Je fais appel à vos services car je rencontre une erreur qui me prend la tête depuis une semaine...

Voici ma requete :

<? $query "SELECT fgscmontant, fgcid, fgscid, prpid FROM fg_souscategorie WHERE fgcid $fgcid AND fgscid = $fgscid AND prpid = 1 ";
$result = mysql_query($query) or die ('Erreur SQL !
'.$sql.'
'.mysql_error());
$nb_result = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{ $fgscid= $row['fgscid'];
$fgscmontant= $row['fgscmontant'];

// c'est ibi que ça se passe :
?> <?=$fgscmontant?> <? } ?>

Voici le message qui s'affiche dans ma page :

Erreur SQL !

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND fgscid 5 AND prpid 1' at line 1

Dedans, je comprends qu'il reçoit bien la valeur de certaine variable (fgscid et prpid) mais je ne comprends pas pourquoi il s'obstine et m'affiche ce message. Ai-je fais une erreur dans ma requête ? (ma base se trouve sur un serveur OVH 90 Plan...)

Merci beaucoup à tous ceux qui liront ceci, et merci enormement à ceux qui m'aideront.

3 réponses

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
25 mars 2010 à 20:00
Disons que tout d'abord mettre les paramètres directement dans la requête sans filtrage n'est vraiment pas la bonne chose à faire.

Tu devrais utiliser mysql_real_escape_string pour t'assurer que tes valeurs ne vienne pas bousiller ta requête SQL. Dans ton cas, il y a probablement un caractère non désirable dans ta variable $fgcid qui s'est glissé.

<?php
$query =
"SELECT fgscmontant, fgcid, fgscid, prpid " .
"FROM fg_souscategorie WHERE " .
"fgcid "" . mysql_real_escape_string($fgcid) . "" AND fgscid "" . mysql_real_escape_string($fgscid) . "" AND prpid = 1 "; 
?>


Sinon il faudrait voir ce que ta variable $query contient juste avant que tu fasses la requête.
0
cs_christuckers Messages postés 75 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 26 mars 2010
26 mars 2010 à 10:48
Ok, merci beaucoup je n'ai plus ce message d'erreur...

En revanche, peux tu m'expliquer les "/", c'est la premiere fois que je voix ca. Et aussi, est-ce normal que ma variable fgscmontant ne s'affiche pas...

Sinon, voici mon tableau en entier :

Charges externes,
J,
F,
M,
A,
M,
J,
J,
A,
S,
O,
N,
D,

----

Fournitures consommables,
,
,
,
,
,
,
,
,
,
,
,
,

----

<? $query = \"SELECT * FROM fg_souscategorie ORDER by fgscid DESC\";
$result = mysql_query($query) or die (\"Lecture des demandes impossible

\");
$nb_result = mysql_num_rows($result);
$i=0;
while($row = mysql_fetch_array($result))
{ $fgscid= $row['fgscid'];
$fgsclibelle= $row['fgsclibelle'];

// c'est ibi que ça se passe :
?>
<?=$fgsclibelle?>,
<?php
$query =
"SELECT fgscmontant, fgcid, fgscid, prpid " .
"FROM fg_souscategorie WHERE " .
"fgcid = \"" . mysql_real_escape_string($fgcid) . "\" AND fgscid = \"" . mysql_real_escape_string($fgscid) . "\" AND prpid = 1 ";
?>
<?=$fgscmontant?> ,
,
,
,
,
,
,
,
,
,
,
,
<? $i=1-$i; } ?>
----

Services exterieurs,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,

----

Loyers de crédit bail,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,

----

Total


A noter ma variable fgsclibelle s'affiche correctement.
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
26 mars 2010 à 16:58
Tu ne fais même pas la requête pour aller chercher la valeur de ton $fgscmontant ... tout ce que tu fais c'est construire la requête sans l'exécuter. Il te manque un mysql_query avec un parcours des résultats.
0
Rejoignez-nous