Erreur syntaxe INSERT INTO... HELP !!

Fermé
divid Messages postés 1 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 26 mars 2008 - 26 mars 2008 à 17:08
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 26 mars 2008 à 18:07
Bonjour,
j'ai une requete sql qui s'éxecute sur un page php... de la forme...

$insertSQL = sprintf("INSERT INTO concerts (num_artiste, nom_artiste, date_concert, adresse_concert, infos_concert, lieu_concert, tel_concert, mail, lien) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['select'], "int"),
GetSQLValueString($row_artiste['nom_artiste'], "text"),
GetSQLValueString($date, "date"),
GetSQLValueString($_POST['adresse_concert'], "text"),
GetSQLValueString($_POST['infos_concert'], "text"),
GetSQLValueString($_POST['lieu_concert'], "text"),
GetSQLValueString($_POST['tel_concert'], "text"),
GetSQLValueString($_POST['mail'], "text"),
GetSQLValueString($_POST['lien'], "text"));

Dans cette requete, $row_artiste['nom_artiste'] a pour valeur "Truc'muche" (avec un apostrophe au milieu)...
Quand la requete s'éxecute, le serveur me retourne l'erreur suivante :
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 'muche', '1977-02-17', 'mljk', 'mlkj', 'mklj', 'mklj', 'mklj', 'ùk...
J'imagine qu'il doit y avoir un bug particulier au niveau de ma requete avec l'apostrophe... je voudrais que dans ma table reste la valeur "Truc'muche"...

Quelqu'un pourrait m'aider ?

Merci d'avance

1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 mars 2008 à 18:07
l'apostrophe gène dans la requette car il ferme la requette avant la fin.

il faut que tu l'échappes par \ grace à la fonction addslashes() de php:

GetSQLValueString(addslashes($row_artiste['nom_artiste']), "text")


la fonction stripslashes() te permettra de faire l'opération inverse qd tu voudra afficher ce que tu as enregistré dans la base
1