Aller au contenu

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


Sujets conseillés

Posté

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

Posté

Bonjour,

Tu peux utiliser la fonction addslashes() de PHP. Elle aura pour effet de mettre un anti-slash \ devant le '.

Posté

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

Posté
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

Posté (modifié)

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

avant je connaissais pas non plus... :D

Modifié par arklif
Posté

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

Posté

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:

Posté (modifié)

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

Veuillez vous connecter pour commenter

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



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