Problème d'apostrophe

Fermé
fourniey - 28 mai 2008 à 22:04
 Anis - 10 oct. 2008 à 00:41
Bonjour,

Bonjour,

Cette requête ne fonctionne pas lorsque $statut contient une apostrophe et je ne sais pas pourquoi.

ora_parse($cur,"SELECT * FROM FON_PHP_STATUT_VUE where STATUT='$statut' order by NOM_FAMILLE, PRENOM",$x) or die(Ora_Error($conn));


Merci de votre aide!

3 réponses

Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
31 mai 2008 à 00:02
C'est parce que, pour les requêtes MySQL, l'apostrophe marque la fin d'un champ. Alors si il y a une apostrophe dans une des valeurs que tu cherches à insérer, par exemple la chaine "aujourd'hui", MySQL va interpréter ça comme :

SELECT event FROM table WHERE date='aujourd'hui'

Le petit bout "hui", il ne saura pas quoi en faire et va donc générer une erreur.

Pour régler ça tu peux soit remplacer l'apostrophe par un caractère de ton choix, où la remplacer par son code HTML par exemple. Peut-être que mettre un caractère d'échappement "\" devant peut marcher mais je n'en suis pas sûr.
1
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
31 mai 2008 à 00:28
Bonsoir,
Comme le souligne Sri Lumpa (décidemment ce soir il aide beaucoup de monde), l'apostrophe ferme la chaine.
Et le caractère d'échappement est effectivement le backslash : http://dev.mysql.com/doc/refman/5.0/fr/string-syntax.html

Je te conseille par ailleurs de faire un petit tour google et de taper 'injection sql', c'est assez intéressant.

Cordialement,
1
Sur la version Orcale SQL, le caractère d'échappement est plutôt l'apostrophe !
-1