lorik Posté 13 Février 2017 Posté 13 Février 2017 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.
BlackPage Posté 13 Février 2017 Posté 13 Février 2017 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 !
lorik Posté 13 Février 2017 Auteur Posté 13 Février 2017 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 ;)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant