(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)
PDO::quote —
Protège une chaîne pour l'utiliser dans une requête SQL PDO
Description
public
PDO::quote(string
$string
, int
$type
= PDO::PARAM_STR): string|false
Si vous utilisez cette fonction pour construire des requêtes SQL, vous êtes
vivement invités à utiliser
PDO::prepare() pour préparer les requêtes SQL avec
des paramètres liés au lieu d'utiliser pdo::quote() pour
interpréter les entrées utilisateur dans la requête SQL. Les requêtes préparées
avec des paramètres liés sont non seulement plus portables, plus souples et
plus sécuritaires, mais bien plus rapides à exécuter que d'interpréter les
requêtes, étant donné que les côtés client et serveur peuvent mettre
en cache une version compilée de la requête.
Tous les pilotes PDO n'implémentent pas cette méthode (comme PDO_ODBC). Utilisez
les requêtes préparées à la place.
Attention
Securité : le jeu de caractères par défaut
Le jeu de caractères doit être défini soit au niveau
du serveur, soit lors de la connexion à la base de
données (suivant le driver utilisé) pour qu'il affecte
la méthode pdo::quote().
Voir la documentation
spécifique au driver pour plus d'informations.
Liste de paramètres
-
string
-
La chaîne à protéger.
-
type
-
Le type de données pour les drivers qui ont des styles particuliers
de protection.
Fournit un indice au type de donnée pour les pilotes qui ont un style
d'échappement différent. Par exemple PDO_PARAM_LOB
indique au pilote d'échapper des données binaires.
Valeurs de retour
Retourne une chaîne protégée, qui est théoriquement sûre à utiliser
dans une requête SQL. Retourne false
si le pilote ne supporte pas
ce type de protections.
Exemples
Exemple #1 Protection d'une chaîne normale
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Chaîne simple */
$string = 'Nice';
print "Chaîne non échappée : $string\n";
print "Chaîne échappée : " . $conn->quote($string) . "\n";
?>
L'exemple ci-dessus va afficher :
Chaîne non échappée : Nice
Chaîne échappée: 'Nice'
Exemple #2 Protection d'une chaîne dangereuse
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Chaîne dangereuse */
$string = 'Chaîne \' particulière';
print "Chaîne non échappée : $string\n";
print "Chaîne échappée :" . $conn->quote($string) . "\n";
?>
L'exemple ci-dessus va afficher :
Chaîne non échappée : Chaîne ' particulière
Chaîne échappée : 'Chaîne '' particulière'
Exemple #3 Protection d'une chaîne complexe
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Chaîne complexe */
$string = "Co'mpl''exe \"ch'\"aîne";
print "Chaîne non échappée : $string\n";
print "Chaîne échappée : " . $conn->quote($string) . "\n";
?>
L'exemple ci-dessus va afficher :
Chaîne non échappée: Co'mpl''exe "ch'"aîne
Chaîne échappée: 'Co''mpl''''exe "ch''"aîne'
Voir aussi
- PDO::prepare() - Prépare une requête à l'exécution et retourne un objet
- PDOStatement::execute() - Exécute une requête préparée