Erreur sql 1064 dûe à l'apostrophe

WRInaute discret
Bonjour,
Quand on entre une donnée dans la base de donnée il n'y a aucun problème avec les apostrophes.

En revanche quand j'édite les commentaires depuis l'admin d'un annuaire et si le descriptif que je veux modifier comporte une apostrophe , prenons comme exemple "l'activité",la db me dit ceci :

Code:
Voici le message d'erreur renvoyé par la base de données : 
1064 : 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 'activité
Impossible d'effectuer la requête pour mettre les infos d'un site à jour dans la table

Et cela même si l'apostrophe est déjà présente dans le texte. (je veux dire je ne la rajoute pas en éditant)
En fait à partir du moment où un texte comporte une apostrophe je ne peux pas l'éditer du tout.

J'ai compris en consultant le net qu'il fallait doubler l'apostrophe pour ne plus avoir d'erreur mais existe t'il un moyen de régler définitivement le problème ?

Je ne m'y connais pas en sql pour savoir quoi faire.

Merci
 
WRInaute occasionnel
Tu dois faire en sorte que l'apostrophe ne soit pas considérée dans le texte édité, cela arrive souvent.

En fait tu postes une variable $desc qui comporte la description.
Tu dois ajouter les antislash pour que l'apostrophe ne soit pas considérée par Mysql, soit :
addslashes($desc)

Donc ta requête devient :

Code:
$req = "UPDATE le_champ_desc=' ".addslashes($desc)." ' WHERE id_annu=$id_annu ";
$res = mysql_query($req);
 
WRInaute accro
C'ets pour cela que je t'avais conseillé :

1 - stripslashes (on fait le menage sans se socier de savoir si c'est des double triples ou x antislash)
2 - addslashes (on remet en bon etat pour la Bdd)

donc la il te suffit de rebalancer 1 et 2 et tout va renter dans l'odre (le 1 etant optionnel ici puisque tu as tout viré) :wink:
 
WRInaute discret
Merci à tous.
Mais en fait le bug était du côté php, la requete devait être mal formatée par le fichier modify_site.php
J'avais dû oublié un ; ou un " ou je te sais quoi encore. :D
J'ai tout repris à zéro et maintenant ça fonctionne.

Code:
1 - stripslashes (on fait le menage sans se socier de savoir si c'est des double triples ou x antislash)
2 - addslashes (on remet en bon etat pour la Bdd)
Mais ça j'aimerai bien savoir quelle est la requete qui l'envoie, même si maintenant tout fonctionne, c'est juste pour ne pas rester dans l'ignorance.
 
Discussions similaires
Haut