Aller au contenu

Problème avec les ' et la base de donnée


fredrick

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

Tu peux aussi utiliser les fonctions type htmlentities, qui vont transformer les caractères spéciaux en entités html.

Lien vers le commentaire
Partager sur d’autres sites

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.

;) Dan

Lien vers le commentaire
Partager sur d’autres sites

Comme Dan, <? addslashes($masupervariable); ?> et <? stripslashes($masupervariable); ?> pour viré les \ :P

avant je connaissais pas non plus... :D

Modifié par arklif
Lien vers le commentaire
Partager sur d’autres sites

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()

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

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.

Modifié par petit-ourson
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...