par
Victor BRITO » 30 janv. 2010, 13:03
L'apostrophe (ou plutôt le guillemet simple) est un caractère sensible, puisque, comme en PHP, il est susceptible de délimiter une chaîne de caractères. C'est pourquoi, utilisé en tant que tel, il doit être échappé, comme suit :
SELECT colonne FROM une_table WHERE colonne = 'Une chaîne comportant des guillemets qu\'il convient d\'échapper';
ou
SELECT colonne FROM une_table WHERE colonne = 'Une chaîne comportant des guillemets qu''il convient d''échapper';
Voir le
manuel MySQL pour plus de précisions.
Lorsque l'on construit une requête SQL en PHP susceptible de comporter des chaînes de caractères avec des guillemets, pour éviter une erreur de syntaxe (ainsi qu'une tentative d'attaque par injection SQL), on procède comme suit, au choix :
- on utilise la fonction mysql_real_escape_string () ;
- ou, si l'on utilise PDO :
L'apostrophe (ou plutôt le guillemet simple) est un caractère sensible, puisque, comme en PHP, il est susceptible de délimiter une chaîne de caractères. C'est pourquoi, utilisé en tant que tel, il doit être échappé, comme suit :
[sql]SELECT colonne FROM une_table WHERE colonne = 'Une chaîne comportant des guillemets qu\'il convient d\'échapper';[/sql]
ou
[sql]SELECT colonne FROM une_table WHERE colonne = 'Une chaîne comportant des guillemets qu''il convient d''échapper';[/sql]
Voir le [url=http://dev.mysql.com/doc/refman/5.0/fr/string-syntax.html]manuel MySQL[/url] pour plus de précisions.
Lorsque l'on construit une requête SQL en PHP susceptible de comporter des chaînes de caractères avec des guillemets, pour éviter une erreur de syntaxe (ainsi qu'une tentative d'attaque par injection SQL), on procède comme suit, au choix :
[list][*]on utilise la fonction mysql_real_escape_string () ;
[*]ou, si l'on utilise PDO :
[list][*]soit on utilise la méthode [url=http://fr.php.net/manual/fr/pdo.quote.php]quote ()[/url],
[*]soit on utilise des [url=http://fr.php.net/manual/fr/pdo.prepared-statements.php]requêtes préparées[/url].[/list][/list]