Pascale
2007-06-10 18:38:36 UTC
Bonjour à tous,
Après plusieurs mois d'interruption, je reviens sur la programmation de mon
site d'identification de plantes. J'ai encore une histoire d'apostrophe qui
me pose souci, et je ne refuserais pas un peu d'aide.
Lorsqu'une personne passe une demande d'identification, ou une proposition
d'identification, les données saisies sont passées par un formulaire.
J'effectue quelques contrôles pour virer les données qui pourraient être
dangereuses et éviter les problèmes de ' et de " :
$douteux=trim($douteux);
$douteux=strip_tags($douteux);
$propre=trim(htmlspecialchars($douteux,ENT_COMPAT,'ISO8859-15'));
J'étais venue il y a quelque mois sur ce forum pour avoir des lumières sur
la gestion des ' et des ", et il en était ressorti que htmlspecialchars
était une bonne solution, et en effet, lorsque j'insère mes données après
les avoir contrôlées :
$ins="INSERT INTO matable VALUES ('','$ch2,'','$ch4')";
mysql_query($ins) or die('Erreur SQL !'.$ins.'<br>'.mysql_error());
L'insertion ne pose jamais de problème et les données sont bien comme elles
doivent être (magic_quotes_gpc est « on »). Par exemple, j'ai dans ma base
de données un descriptif de ce genre :
C'est ma "belle" plante.
Les ennuis commencent lorsque je veux faire un UPDATE sur des données déjà
entrées, ce qui arrive lorsqu'un utilisateur met à jour sa demande. Lui,
écrit dans une table temporaire (après contrôle des données), je fais donc
un INSERT, ça marche. Mais lorsque je valide sa demande de modification, je
dois remplacer les anciennes données par les nouvelles dans la table
principale, et là, ça va plus du tout, dès lors que le texte contient une
apostrophe : je me prends un message d'erreur de ce genre :
Erreur SQL !UPDATE matable SET hauteur='nouvelle hauteur',envir='C'est ma
belle plante' WHERE numfiche='1528'
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'est ma belle
plante'
Donc manifestement, c'est bien l'apostrophe qui coince. J'aimerais
comprendre pourquoi et surtout, comment résoudre ce casse-tête...
Après plusieurs mois d'interruption, je reviens sur la programmation de mon
site d'identification de plantes. J'ai encore une histoire d'apostrophe qui
me pose souci, et je ne refuserais pas un peu d'aide.
Lorsqu'une personne passe une demande d'identification, ou une proposition
d'identification, les données saisies sont passées par un formulaire.
J'effectue quelques contrôles pour virer les données qui pourraient être
dangereuses et éviter les problèmes de ' et de " :
$douteux=trim($douteux);
$douteux=strip_tags($douteux);
$propre=trim(htmlspecialchars($douteux,ENT_COMPAT,'ISO8859-15'));
J'étais venue il y a quelque mois sur ce forum pour avoir des lumières sur
la gestion des ' et des ", et il en était ressorti que htmlspecialchars
était une bonne solution, et en effet, lorsque j'insère mes données après
les avoir contrôlées :
$ins="INSERT INTO matable VALUES ('','$ch2,'','$ch4')";
mysql_query($ins) or die('Erreur SQL !'.$ins.'<br>'.mysql_error());
L'insertion ne pose jamais de problème et les données sont bien comme elles
doivent être (magic_quotes_gpc est « on »). Par exemple, j'ai dans ma base
de données un descriptif de ce genre :
C'est ma "belle" plante.
Les ennuis commencent lorsque je veux faire un UPDATE sur des données déjà
entrées, ce qui arrive lorsqu'un utilisateur met à jour sa demande. Lui,
écrit dans une table temporaire (après contrôle des données), je fais donc
un INSERT, ça marche. Mais lorsque je valide sa demande de modification, je
dois remplacer les anciennes données par les nouvelles dans la table
principale, et là, ça va plus du tout, dès lors que le texte contient une
apostrophe : je me prends un message d'erreur de ce genre :
Erreur SQL !UPDATE matable SET hauteur='nouvelle hauteur',envir='C'est ma
belle plante' WHERE numfiche='1528'
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'est ma belle
plante'
Donc manifestement, c'est bien l'apostrophe qui coince. J'aimerais
comprendre pourquoi et surtout, comment résoudre ce casse-tête...
--
Pascale
Pascale