Rechercher : dans
Par :

Problème d'apostrophe

Dernière réponse le 10 oct 2008 à 00:41:16 fourniey, le 28 mai 2008 à 22:04:07 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Problème d'apostrophe » dans :
Les guillemets, apostrophes et les chaînes Voir Comment jouer avec les guillemets et les apostrophes dans les chaînes 1. Préambule 2. Éviter une coupure dans la chaîne 3. Ajouter un guillemet dans la chaîne 3.1 Avec l'apostrophe 3.2 Avec l'ASCII 3.3 Directement 3.3.1 Méthode...
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en...

1

Sri Lumpa, le 31 mai 2008 à 00:02:24

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.

Répondre à Sri Lumpa

2

Marco la baraque, le 31 mai 2008 à 00:28:02

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,

Répondre à Marco la baraque

3

 Anis, le 10 oct 2008 à 00:41:16

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

Répondre à Anis