syntax error

syntax error - SQL/NoSQL - Programmation

Marsh Posté le 30-06-2004 à 10:06:46    

Salut
je suis en train de faire un back office qui rentre des données dans mysql et j'ai cette erreur au moment de l'envoi des infos:

Code :
  1. You have an error in your SQL syntax near 'VALUES (' ','2004-06-30','sdfsf','sdfsdf','sqdfsdf','sdfsdf','sdfsdfs','')' at line 1


 
Vous savez d'où ça peut venir?
merci

Reply

Marsh Posté le 30-06-2004 à 10:06:46   

Reply

Marsh Posté le 30-06-2004 à 10:37:15    

La réponse est écrite dans ton post : near 'VALUES
 
Plus sérieusement, il nous faudrait au moins la requete, et si celle-ci est dynamique, tu pourrais l'afficher avant de faire le mysql_query, ce qui te permettrait de voir ton erreur


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 30-06-2004 à 10:37:37    

Est ce que tu ne peux pas mettre l'ensemble de la query???

Reply

Marsh Posté le 30-06-2004 à 10:52:42    

vous voulez voir le formulaire qui me permet de remplir les champs?

Reply

Marsh Posté le 30-06-2004 à 10:54:14    

non, la requète que tu transmets


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 30-06-2004 à 10:55:56    

Code :
  1. $q_insert  = mysql_query("INSERT INTO 'news' VALUES (' ','$date','$texte_fr','$texte_en','$texte_it','$texte_es','$url','')" )or die(mysql_error());

Reply

Marsh Posté le 30-06-2004 à 10:57:23    

enleve les '' autour de news...

Reply

Marsh Posté le 30-06-2004 à 10:58:46    

Enlève les cotes autour du nom de la table
 
Ensuite il faut véridier la nature des champs, et que ceci soit positioné dans l'ordre puisque tu ne les listes pas auparavant.
 
Si tu peux également faire un affichage de la requèe avant éxecution, comme ca

Code :
  1. $requete = "INSERT INTO 'news' VALUES (' ','$date','$texte_fr','$texte_en','$texte_it','$texte_es','$url','')"
  2. echo $requete
  3. $q_insert  = mysql_query($requete)or die(mysql_error());


on pourrait avoir un exemple concret de requete envoyée vers le SGBD


Message édité par Lord II le 30-06-2004 à 10:59:26

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 30-06-2004 à 11:00:47    

ah ouai, jpouvais tjrs chercher. Merci, c'est ça.
 
par contre j'ai une autre erreur:
Column count doesn't match value count at row 1
 
C'est la date qu'à un probleme?

Reply

Marsh Posté le 30-06-2004 à 11:02:39    

Non cela veut dire que tu ne rensigne pas tous les champs. Pour éviter ce genre de probleme ( meme si c'est plus court ), je te conseille de lister les champs dans ton insert

Code :
  1. insert into TABLE (CHAMP1,CHAMP2,...) VALUES(VALUE1,VALUE2,...)


Message édité par Lord II le 30-06-2004 à 11:02:53

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 30-06-2004 à 11:02:39   

Reply

Marsh Posté le 30-06-2004 à 11:14:26    

et c'est normal le premier (et le dernier) champ vide '' dans () de VALUE
 
je suis un peu perdu car j'ai recup une page php fait par un prestataire et je passe mon tps a debugger

Reply

Marsh Posté le 30-06-2004 à 11:17:05    

on est daccord que ça donne ça:

Code :
  1. $q_insert  = mysql_query("INSERT INTO news (' ','date','texte_fr','texte_en','texte_it','texte_es','url','') VALUES (' ','$date','$texte_fr','$texte_en','$texte_it','$texte_es','$url','')" )or die(mysql_error());


?

Reply

Marsh Posté le 30-06-2004 à 11:18:27    

Normalement on peut tout à fait insérer des champs vides dans une base.
 
En fait, ta requête me semble correcte (mise à part le 'news' entre quote, car je vois pas comment tu pourrais insérer des données dans une chaîne de caractère)
 
La lise des champs avant le values est facultative à condition de fournir le même nombre de valeurs que de champs. Toutefois, si demain j'ai un mec qui bosse avec moi qui fait ça, c'est lui ou moi, mais l'un des deux quitte le projet, par expérience, y'a rien de mieu pour planter l'intégralité du code pour une raison "incompréhensible" 6 mois après la mise en prod du soft, quand un admin se sera amusé à faire un alter table histoire de modifier quelques trucs dans la table... Donc toujours fournir la liste des champs en plus des valeurs, ça permet au SGBD de savoir quelle donnée insérer dans quelle colonnes, au cas ou des colonnes soient rajoutées, ou qu'elles ne soient plus de le même ordre, ce qui arrive régulièrement dans une base qui "vit" )

Reply

Marsh Posté le 30-06-2004 à 11:19:57    

kameha a écrit :

et c'est normal le premier (et le dernier) champ vide '' dans () de VALUE
 
je suis un peu perdu car j'ai recup une page php fait par un prestataire et je passe mon tps a debugger


 Là, on ne va pas pouvoir t'aider car on ne connait pas les structures des tables, ni les données que tu y enregistres.
 
Là, il faut que tu te penches un peu sur les tables, et le pourquoi du comment, on n'y insères des champs vides


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 30-06-2004 à 11:20:27    

et ya pas une erreur de syntaxe dans mon dernier post

Reply

Marsh Posté le 30-06-2004 à 11:21:29    

pour le 1er champ vide, je me dis que c'est l'id qui s'auto incremente mais c'est le dernier qui me faisait douter

Reply

Marsh Posté le 30-06-2004 à 11:22:04    

moi je suis sûr que c'est le 'news'. Les ' n'ont rien à foutre autour d'un nom de table, à moins que ce soit encore une invention de MySQL, mais ca m'étonnerait grandement.

Reply

Marsh Posté le 30-06-2004 à 11:22:19    

les quotes dans la liste des champs sont en trop. Ensuite dans la liste des valeurs, tu ne mets des cotes qu'autour de certain type de valeur
 
Il me semble que je t'ai donné un peu plus haut la syntaxe correcte du INSERT


Message édité par Lord II le 30-06-2004 à 11:23:56

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 30-06-2004 à 11:23:16    

arf, j'avais pas vu les ' aussi dans la description de la table :)
 
bon ben pas besoin de chercher plus loin...

Reply

Marsh Posté le 30-06-2004 à 11:23:35    

si, le nom du champs ' ', le premier et apres 'url'...  
$q_insert  = mysql_query("INSERT INTO news (date,texte_fr,texte_en,texte_it,texte_es,url) VALUES ('$date','$texte_fr','$texte_en','$texte_it','$texte_es','$url')" )or die(mysql_error());

Reply

Marsh Posté le 30-06-2004 à 11:24:07    

Arjuna-->Ernst me l'a dit un peu plus haut. Ca été modif merci.

Reply

Marsh Posté le 30-06-2004 à 11:25:38    

Arjuna-->ah oui tu parlais des ' ds la description des tables, autant pour moi

Reply

Marsh Posté le 30-06-2004 à 11:26:51    

j'ai encore un ou deux bugs mais ça marche
 
MERCI A TOUS

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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