par
Henri » 06 juil. 2006, 10:02
C'est toujours le souk avec ces apostrophes : on se demande pourquoi les concepteurs de SQL ont choisi l'apostrophe comme délimiteur de chaînes de caractères, c'était d'une stupidité sans nom : il y a tant de caractères qui ne servent à rien et qui auraient pu servir .... Mais bon, c'est fait, c'est fait.
Pour couronner le tout, les spécifs SQL ne précisent pas comment traiter une apostrophe dans une chaîne, donc chaque éditeur de base a fait comme il veut. Selon les bases SQL, on a les syntaxes suivantes :
Code : Tout sélectionner
INSERT INTO matable (monchamp) VALUES ('J\'aime l\'apostrophe')
INSERT INTO matable (monchamp) VALUES ('J''aime l''apostrophe')
INSERT INTO matable (monchamp) VALUES ('J~'aime l~'apostrophe')
De mémoire, ODBC utilise le doublement de l'apostrophe (deux fois l'apostrophe simple) et donc le addslashes ne sert à rien dans ce cas (fais toi ta fonction avec un simple str_replace)
Attention en plus : ça c'est la syntaxe SQL directe telle qu'elle est reçue par la base : donc si en plus tu dois inclure ta variable dans une chaîne PHP délimitée par des simples apostrophes, tu vas te retrouver avec des \'\' afin que la base recoive bien ''.
C'est toujours le souk avec ces apostrophes : on se demande pourquoi les concepteurs de SQL ont choisi l'apostrophe comme délimiteur de chaînes de caractères, c'était d'une stupidité sans nom : il y a tant de caractères qui ne servent à rien et qui auraient pu servir .... Mais bon, c'est fait, c'est fait.
Pour couronner le tout, les spécifs SQL ne précisent pas comment traiter une apostrophe dans une chaîne, donc chaque éditeur de base a fait comme il veut. Selon les bases SQL, on a les syntaxes suivantes :
[code]
INSERT INTO matable (monchamp) VALUES ('J\'aime l\'apostrophe')
INSERT INTO matable (monchamp) VALUES ('J''aime l''apostrophe')
INSERT INTO matable (monchamp) VALUES ('J~'aime l~'apostrophe')
[/code]
De mémoire, ODBC utilise le doublement de l'apostrophe (deux fois l'apostrophe simple) et donc le addslashes ne sert à rien dans ce cas (fais toi ta fonction avec un simple str_replace)
Attention en plus : ça c'est la syntaxe SQL directe telle qu'elle est reçue par la base : donc si en plus tu dois inclure ta variable dans une chaîne PHP délimitée par des simples apostrophes, tu vas te retrouver avec des \'\' afin que la base recoive bien ''.