C'est tout à fait normal...
Le addslash est là pour que les requêtes ne plantent pas quand on met des quotes dans le nom d'un champ. Le backslash est un caractère d'échappement.
Le caractère d'échappement devant la single quote "\'" est là pour signaler à mysql qu'il ne doit pas interpréter le caractère qui le suit, et fait donc en sorte que la single quote fasse partie de la chaînes de caractères.
Ca sert également à éviter que des petits malins ne fasse des injections comme ils disent dans la doc : placer des quotes dans un champ de formulaire de façon à placer des conditions supplémentaires dans une requête (pour s'authentifier notamment).
http://php.belnet.be/manual/fr/function.addslashes.php
Et donc, une fois que les données sont en db, il n'y a aucun intérêt à laisser les backslashes dedans. Et de toute façon, le caractère d'échappement n'est pas un caractère en soit (ai un peu de mal à expliquer là ;-)).
Comme le "\n" pour new line, ni le "\" ni le "n" ne sont imprimés. Le "\n" est remplacé par le caractère qui correspond à une nouvelle ligne.
Mais si tu veux, une fois que tu récupères ta donnée de la DB, rien ne t'empêche de refaire un addslash dessus.
Et il ne faut pour moi jamais mettre de "\" en DB car en DB, la longueur de tes champs est déterminée à l'avance (varchar 50 par expl). Donc dans tes formulaires, tu devrais utiliser l'attribut maxlength="50" sur tes champs. Mais si ta donnée fait 50 caractères et que tu as 3 quotes dedans, ça fait 53 caractères à mettre en DB!. Et là, ça devient trop compliqué à gérer. Donc pas de backslashes en DB compris?? ;-)
Si tu ne comprends toujours pas, n'hésite pas.
A+
Message édité par autofill le 04-07-2005 à 00:35:19