Problème d'encodage avec fonction "mysql_real_escape_string"

Résolu
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012 - 5 août 2009 à 14:24
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012 - 6 août 2009 à 14:55
Bonjour,
Alors voila, je récupère des champs d'un fichier csv.
Je les récupère dans un tableau puis j'utilise la fonction utf8_decode avant de les envoyer dans ma base de données, comme cela, les caractères spéciaux sont gérés.

Le problème est que le transfert s'arrête lorsque j'ai un apostrophe dans un des champs du fichier. Il considère que la requête SQL est fausse et arrête le traitement.

J'ai donc trouvé la fonction "mysql_real_escape_string" qui doit mettre un caractère d'échappement pour que celui ci soit géré comme une chaîne de caractère classique mais dès que je l'utilise couplé à ma fonction utf8, je pers l'affichage des accents.

Quelqu'un à t'il une solution ?

Voici ma façon de procéder :

$ville = mysql_real_escape_string($data[6]);
$ville = utf8_decode($ville); echo $ville;


echo $ville; revoit "le ch?au d\'ol?n"
au lieu de "le château d'oléron"

N'y a t'il pas moyen de combiner ces deux fonctions pour avoir le résultat que je souhaite à l'affichage ?

Merci d'avance

6 réponses

cs_InTheMix Messages postés 18 Date d'inscription mercredi 18 octobre 2000 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 15:47
Je n'ai peut-être pas compris, mais, est-ce que tu as essayé la fonction addslashes ?

voir sur php.net


InTheMix
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 août 2009 à 20:06
Salut,

mysql_real_escape_string fait ce que fait addslashes bien mieux (sécurité, etc ...)
Elle est sans doute bien plus indiquée que addslashes et tu devrais faire la correction (sans le uft8_decode)


Cordialement,


Kohntark -
3
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
5 août 2009 à 14:41
Salut anthony !

As-tu essayé avec htmlentities() ????

genre :

$ville = mysql_real_escape_string(htmlentities($data[6]));

J'espère que ça fonctionnera pour toi ainsi... !!!
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
5 août 2009 à 15:28
salut,
merci pour ta réponse et en effet, je pense que cela doit être l'une de ces fonction mais laquelle ?

Le résultat entré dans ma base de données et le suivant :
d'oléron

Je pense qu'il ne manque pas grand chose pour que l'affichage soit correct.
Merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
5 août 2009 à 16:13
Merci, tout à compris à mon problème. La fonction addslashes fonctionne à merveille. Je n'ai pas besoin de la fonction utf8_decode en plus, je n'ai besoin que de :

$ville = addslashes($data[6]);

Merci pour votre aide.
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
6 août 2009 à 14:55
en effet, la fonction mysql_real_escape_string fonctionne également. Si tu me dis que cette fonction semble plus indiqué que la fonction addslashes, je te fais confiance, ça ne serait pas la première fois que tu m'aide sur ce forum.
En tout cas, merci à vous pour m'avoir aidé à solutionner mon problème.
0
Rejoignez-nous