Version complète: sur le forum Webmaster Hub : Problème avec les ' et la base de donnée
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
fredrick
Voilà,

J'ai un petit soucis avec l'insertion de données provenant d'un champ de formulaire dans une base de donnée.

Lorsque le visiteur tape une phrase contenant un ' dans le champ du formulaire alors les données ne pas inscrites dans la bdd.

Ex: rue d'Ecaussinnes

Ca ne marchera pas à cause du '

Comment régler ce problème?

Merci,

Fred
NorSeb
Bonjour,

Tu peux utiliser la fonction addslashes() de PHP. Elle aura pour effet de mettre un anti-slash \ devant le '.
fredrick
merci beaucoup. Je ne connaissais pas cette fonction.

Bonne journée et encore merci,

Fred
Anonymus
Tu peux aussi utiliser les fonctions type htmlentities, qui vont transformer les caractères spéciaux en entités html.
Dan
CITATION(fredrick @ mercredi 19 avril 2006, 17h54)
merci beaucoup. Je ne connaissais pas cette fonction.
*

Donc j'imagine que tu ne connais pas stripslashes() à utiliser lors de la récupération pour enlever les backslashes ajoutés précédemment.

wink.gif Dan
arklif
Comme Dan, <? addslashes($masupervariable); ?> et <? stripslashes($masupervariable); ?> pour viré les \ tongue.gif

avant je connaissais pas non plus... biggrin.gif
petit-ourson
Moi aimant les bases de données clean (sans caractères échappés ou convertis en html, on ne sait jamais ce que l'on fera des données), je conseille plutot d'utiliser :

mysql_real_escape_string()
ou
mysql_escape_string()
Boo2M0rs0
Heu ... je comprends pas, pourquoi faudrait-il utiliser stripslashes avant l'affichage ?? Addslashes est utilisé pour que mysql comprene que le ' est un caractère et donc il n'enregistre pas le slash dans la base de donnée, donc quand on fait une requête, il ne renvoit pas de slash à php donc stripslashes est inutile et altère même les données (en supposant que l'utilisateur ait tapé intentionnelement des slash).

Si vous êtes quand même obligés d'utiliser stripslashes, c'est que les données ont été échappés deux fois de suite (une première fois par magic_quote_gpc et une deuxième fois par addslashes() ).

Sinon, il m'est arrivé avec certains scripts qu'ils ne marchent pas en ligne sur mon hebergement, parce que j'avais échappé les guillemets avec un slash (ça donne \' ).
J'ai utilisé un autre échappement propre à mysql, qui consiste à doubler les guillemets ( ça donne '' ) et cette fois-ci je n'ai pas obtenu d'erreur mysql et le script a marché à merveille ... wacko.gif
petit-ourson
Attention également pour ceux qui ont les (satanées) magic_quotes d'activées ...

Pour mysql, il est conseillé d'échapper plus que les quote il me semble.
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.