SQL syntax error dans fonction insert into

Résolu
scarfesse Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
scarfesse Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis bloqué depuis une semaine sur une supposée erreur de syntaxe dans une fonction insert into...
Moi je vois pas d'erreur avec mes yeux de débutants, mais peut être que quelqu'un voit une erreur...

Voila le code correspondant:


$query_insert = sprintf("INSERT INTO shop_line_order (order, article, price_ht, price_ttc, quantity, total_ht, total_ttc) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($row_order['id'], "int"),
GetSQLValueString($row_basket['article'], "int"),
GetSQLValueString($row_basket['price_ht'], "double"),
GetSQLValueString($row_basket['price_ttc'], "double"),
GetSQLValueString($row_basket['Quantity'], "int"),
GetSQLValueString($row_basket['total_ht'], "double"),
GetSQLValueString($row_basket['total_ttc'], "double"));
mysql_select_db($database_shop, $shop);
$Result1 = mysql_query($query_insert, $shop) or die(mysql_error());

J'ai testé chacune des variables, la fonction getSQLvlauestring fait bien son boulot!!
Donc je ne sais pas d'ou ça vient.
S'il vous plait de l'aide parce que j'en peut plus de pietiner là!

Merci

5 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Le problème vient du fait qu'un de tes noms de colonnes, « order », est un mot réservé en SQL !
Pour éviter ça, il faut lui mettre des apostrophes inversées : ` (symbole que tu trouves par la combinaison ([Alt Gr] + [7]), ou si tu n'y arrives pas, en copiant collant la caractère)
Donc ta requête devient :
$query_insert = sprintf("INSERT INTO shop_line_order (`order`, article, price_ht, price_ttc, quantity, total_ht, total_ttc) VALUES (%s, %s, %s, %s, %s, %s, %s)",
    GetSQLValueString($row_order['id'], "int"),
    GetSQLValueString($row_basket['article'], "int"),
    GetSQLValueString($row_basket['price_ht'], "double"),
    GetSQLValueString($row_basket['price_ttc'], "double"),
    GetSQLValueString($row_basket['Quantity'], "int"),
    GetSQLValueString($row_basket['total_ht'], "double"),
    GetSQLValueString($row_basket['total_ttc'], "double"));
mysql_select_db($database_shop, $shop);
$Result1 = mysql_query($query_insert, $shop) or die(mysql_error()); 
En fait, tu peux même mettre ces ` autour de tous les noms de champ, c'est plus propre et évitera d'autres problèmes du même genre :)

Xavier
2
scarfesse Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   2
 
Super ça marche!!!

Merci beaucoup Xavier, ça fait deux semaines que je suis dessus!!!
Il faut que j'aille fêter ça...
1
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Tu pourrais nous donner le message d'erreur ?
Et si tu fais
echo $query_insert;

ça donne quoi ?

Xavier
0
scarfesse Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut Reivax962,

J'ai rajouté la fonction echo
Il m'a donné des valeurs qui étaient entre ', et d'autre non.
Ca venait de la fonction getSQLvaluestring.
Je sais pas si il les faut ou pas. je viens d'essayer sans. Ca ne marche pas. Je vais essayer d'en rajouter aux valeurs qui n'en ont pas pour voir.

Sinon le message d'erreur est le suivent


INSERT INTO shop_line_order (order, article, price_ht, price_ttc, quantity, total_ht, total_ttc) VALUES (169, 6, 233, 279, 1, 233, 279)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 'order, article, price_ht, price_ttc, quantity, total_ht, total_ttc) VALUES (169,' at line 2

Merci pour l'aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scarfesse Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   2
 
Meme problème en rajouter des quotes partout!!
0