Problème d'apostrophe

fourniey -  
 Anis -
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 Statut Membre 69
 
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 1030 Statut Contributeur 329
 
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
Anis
 
Sur la version Orcale SQL, le caractère d'échappement est plutôt l'apostrophe !
-1