Aller au contenu

mysqli_real_escape_string fonctionnement bizarre...


Sujets conseillés

Posté

Bonjour à tous, un tit truc assez inexplicable pour moi...

J'ai un script, qui extrait des données de plusieurs sources, les traites, et insere dans une table. Pour chaque donnée, avant de l'inserer, j'ai un

$var=mysqli_real_escape_string ($link, $var);

alors d'un coté, ça marche bien, mes données sont correctement insérées, même quand j'ai des caractères à échapper. Par contre, 2 trucs :

- Dans ma table, même si les données sont insérée, j'ai certains caractères correctement echappés dans un champ (ex, Organisé par l\'Olympique d\'Huez- Alpes d\'Huez), et pas échappés dans d'autres champs (Alpes d'Huez) alors que la chaine a bien été soumise à mysqli_escape_string(..)

Et aussi, dans l'autre sens, j'avais oublié d'echapper certaines données, et... elle sont correctement insérées, alors qu'il traine dedans les caractères qui devraient faire planter la requete, comme '...

 

Vous allez me dire, 'bon, mais si c'est bien inséré, il est ou le problème ?' Bal le problème, c'est qu'après, j'ai un autre traitement qui lit la table, et insère certaines données dans une autre table. Et là, les chaines non echappées (pourtant bien insérées dans la première table) font planter la 2eme insertion...

 

Bref, y un truc que je pige pas, là...

 

Merci de votre aide.

Posté

Salut,

Y'a une confusion quelque part parce que échapper un string au moment de l'insertion ca ne met pas de slash dans la table normalement...

Bref si ton insertion était bonne, tu aurais "Alpes d'huez" dans le champ et pas "Alpes d\'huez"

Donc y'a un double échappage qui traine quelque part.

Pour info, perso sur insertion je mets les fonctions d'échappement directement au niveau du insert :

 

Insert into matable (
	Champ1,
	Champ2,
	...
) values (
	'" . mysql_real_escape_string($mavar1) . "',
    '" . mysql_real_escape_string($mavar2) . "',
    ....
)

Ca évite ce genre de problèmes puisque $mavar n'est jamais modifié ailleurs qu'à l'insertion

 

Bon courage pour ta recherche !

Posté

Merci de la réponse.

Effectivement, il y avait une double utilisation de

mysql_real_escape_string

c'est ça qui mettait le B... Une fois nettoyé, ça marche mieux. Je retiens l'idée de mettre ça juste à l'insert, c'est vrai qu'on est tranquille, du coup ;)

Veuillez vous connecter pour commenter

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



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