Version complète: sur le forum Webmaster Hub : You have an error in your SQL syntax
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Boumbadaboum
Bonsoir à tous,
J'essaie d'insérer des données dans une base, mais j'obtien ce message d'erreur :

CODE
You have an error in your SQL syntax near ''cuisine' ( 'libelle' , 'url' , 'definition' , 'specialite', 'lien' , ' at line 1


J'utilise cette requête :

CODE
$Def="INSERT INTO 'cuisine'( 'libelle' , 'url' , 'definition' , 'specialite', 'lien' , 'lienA' , `lienB` , `lienC`,`lienD`,'Site','nom' )
VALUES (
'$libelle', '$url', '$description', '$categorie','$lien', '$lienA' , `$lienB` , `$lienC`,`$lienD`,'$Site','$nom' )";


Cette même requête fonctionne bien pour d'autre formulaire d'insertion de données.
J'ai bien vérifié le nom des variables, ainsi que le nom des champs de la base.
Donc je ne comprend pas du tout pourquoi j'ai un message d'erreur tel qu'en haut.
J'ai essayé aussi de placer une erreur dans la requête pour voir : J'ai mis INSERT INTO 'cusine' au lieu de'cuisine'. J'ai obtenu exactement le même message d'erreur.

De quoi cela peut il bien venir??

Merci pour votre aide.
Dan
Bonjour,

A première lecture tu mélanges allègrement les simples quotes ' et les backquotes ` ... et ce n'est pas bon. Les backquotes ne peuvent être utilisés que pour les noms de tables, pas pour les champs.

De plus, le fait de mettre tes variables dans des simples quotes en empêche l'interprétation. Il faut scinder ta chaîne.

Dan
Boumbadaboum
ok
merci Dan pour ta réponse, je n'ai plus le même message d'erreur... Donc j'en ai un autre ! (rien à voir cela étant à première vue)

maintenant j'obtiens le message

CODE
Unknown column 'ma deuxième def' in 'field list'


Mais ce que ne comprend pas c'est que 'ma deuxième def' n'est pas le nom d'une colonne c'est simplement la valeur d'une variable.

J'explique le fonctionnement global :

Le visiteur envoie une def dans la table recette suggérée: ça fonctionne.
Je réceptionne le contenu des champs dans mon admin pour valider : les valeurs des champs s'inscrivent directement dans des champs de formulaires, que je revalide ensuite si le contenu est correct.
ex: champ recette = les omelettes
dans mon admin je recois dans un input text 'les omelettes' etc pour toutes les valeurs.

donc 'ma deuxième def' ci dessus n'est rien d'autre que la valeur 'value' d'un imput text, correspondant au contenu d'un champ de la table réceptionnant les suggestions des visiteurs.
Pourtant j'obtiens le message ci dessus.
J'ai essayé de virer tout simplement ce champs de l'admin, pour ne pas avoir à le valider : Plus de message d'erreur, mais la table de destination ne reçoit absolument rien.

Un poltergeist dans mon serveur ?
sarc
Salut wink.gif
Il faudrait plutôt avoir le code qui pose problème, là je doute que ça soit juste un problème de valeur dans un formulaire, à mon avis c'est plutôt dans le traitement en PHP qu'il y a un souci ! wink.gif
Boumbadaboum
Ok :

CODE
<?php
$validerNvDef="SELECT * FROM nouvelleDefinition WHERE libelle like '$nouvelleDefinition%' AND vue=0";
$validerDef=mysql_query("$validerNvDef");
while ($rNdef=mysql_fetch_array($validerDef))
{echo"
<input type=\"text\" name=\"libelle\" value=\"$rNdef[libelle]\">
<input type=\"text\" name=\"url\">
<input type=\"text\" name=\"site\" value=\"$rNdef[site]\">
<input type=\"text\" name=\"url\" value=\"$rNdef[url]\">
<input type=\"text\" name=\"specialite\" value=\"$rNdef[categorie]\">
$rNdef[Nvcategorie]</b><br>
<textarea name=\"description\" cols=\"40\" rows=\"20\"  >$rNdef[description]</textarea>
<input type=\"text\" name=\"lien\" value=\"$rNdef[lien1]\">
<input type=\"text\" name=\"lienA\" value=\"$rNdef[lien2]\">
<input type=\"text\" name=\"lienB\" value=\"$rNdef[lien3]\">
<input type=\"text\" name=\"lienC\" value=\"$rNdef[lien4]\">
<input type=\"text\" name=\"lienD\" value=\"$rNdef[lien5]\">
<input type=\"text\" name=\"email\" value=\"$rNdef[email]\">
<input type=\"text\" name=\"vue\" value=\"$rNdef[vue]\">
<input  type="submit" value="Envoyer">


Les champs email et vue ne sont pas insérés dans la requête sql (écrite au début du post).
Je récupère le contenu des value des input text ci dessus depuis une table qui contient donc les suggestions. Une fois vérifié en les lisant dans les champs input text je les réexpédie dans une autre table.
En théorie donc, puisque l'autre table ne recoit rien.
Dan
Ce n'est très certainement pas ce code là auquel Sarc faisait allusion.
Ce serait plutôt le code se trouvant dans le script php qui génère les requêtes sql.

Dan
Boumbadaboum
c'est celui du premier post donc je pensais pas à celui là:
Bon voici donc le code qui génère la requête :

CODE
$Def="INSERT INTO `definitions` (  `libelle` , `url` , `definition` , `specialite`, `lien` , `lienA` , `lienB` , `lienC`,`lienD`,`Site`,`nom` )
VALUES (
`$def`, `$url`, `$description`, `$categorie`,`$lien`, `$lienA`, `$lienB`, `$lienC`, `$lienD`,`$Site`,`$nom`
)";
mysql_query($Def)or die (mysql_error());;

echo "Vos données ont été envoyées !";

mysql_close();



Voili voilou

Got an idea?
sarc
Je crois que tu n'as pas donné toute l'erreur du script, et surtout il faudrait préciser à quelle ligne de quel programme se situe l'erreur, ça permettra de mieux cibler le problème...
Boumbadaboum
ah si j'ai donné toute l'erreur du script :


CODE
Unknown column 'ma deuxième def' in 'field list'


et 'ma deuxième def' c'est la valeur de value input text qui post la variable $def avec ce contenu à destination de la requête sql ci dessus.

et j'ai dit que si j'enlève ce champs, je n'ai plus de message d'erreur, mais rien du tout n'est inséré dans la base.
Boumbadaboum
ouah Dan, je viens de voir ta photo : Je croyais que t'étais un petit jeune de 28/30 ans ! (peut être remarque wink.gif )


Enfin le problème est toujours là hein, faudrait pas l'oublier svp lol
Dan
CITATION(Boumbadaboum @ dimanche 07 août 2005, 20h14)
ouah Dan, je viens de voir ta photo : Je croyais que t'étais un petit jeune de 28/30 ans ! (peut être remarque  wink.gif  )
*

Ah, pourquoi donc ? Je fais plus vieux que ça ? laugh.gif

Qu'est ce que j'ai écrit plus haut pour les backquotes ? As-tu lu le post ?

Dan
Boumbadaboum
La vache je suis une tâche j'ai encore confondu les backquotes et les simples quotes


là ça fonctionne c'est bon

Donc merci Dan encore, le prob aurait pu être réglé dès le deuxième post.
sarc
Dan il a peut-être 30 ans mais lui au moins a des bonnes lunettes nah... tongue.gif
Tu nous fais tourner autour du pot pour nous montrer à la fin que tu n'as pas fais ce qu'avait dit Dan, c'est incroyable ça ! wink.gif enfin le principal est que ça marche...
Si jamais tu as encore un problème n'hésite pas hein lool
Boumbadaboum
On a posté ensemble, c'est bon ok.


En fait Dan, quand tu m'as dit les backquotes c'est pas pour les champs je n'ai pas fait le rapprochement avec les variables.
C'est bête mais bon.

Sinon non tu fais bien la trentaine, ton âge quoi. Par contre le coup de la barbe teinte en blanc pour faire oldSchool et tout je sais pas, mais bon c'est toi qui voit.

Bon allez j'arrête tongue.gif

Et merci smile.gif
Dan
Tu as ma date de naissance dans mon profil... je n'ai aucunement honte de ma cinquantaine bien entamée smile.gif
Boumbadaboum
Bah y'a pas de quoi avoir honte au contraire, si tu as marché dans le droit chemin toute ta vie plus tu es "âgé" plus tu es intéressant puisque tu es allé plus loin dans le bon sens.

En tout cas félicitation pour ton forum : Je me suis inscrit sur 5 forums en même temps il y 2 ou 3 semaines je sais plus et je ne viens plus qu'ici.

Bon je vais manger, bonne soirée à tous
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.