Problème d'encodage avec fonction "mysql_real_escape_string" [Résolu]

Signaler
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
-
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
-
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

Messages postés
18
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
5 août 2009

Je n'ai peut-être pas compris, mais, est-ce que tu as essayé la fonction addslashes ?

voir sur php.net


InTheMix
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
59
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
2 avril 2010

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... !!!
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012

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
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012

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.
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012

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.