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!
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. 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
  2. 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
  3. Anis
     
    Sur la version Orcale SQL, le caractère d'échappement est plutôt l'apostrophe !
    -1