Aller au contenu
lorik

mysqli_real_escape_string fonctionnement bizarre...

Noter ce sujet :

Recommended Posts

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×