PDO::quote
Traite une chaîne à utiliser dans une requête en plaçant des guillemets autour de la chaîne d’entrée comme l’exige la base de données SQL Server sous-jacente. PDO::quote échappe les caractères spéciaux dans la chaîne d’entrée à l’aide d’un style approprié à SQL Server.
Syntaxe
string PDO::quote( $string[, $parameter_type ] )
Paramètres
$string : chaîne à placer entre guillemets.
$parameter_type : symbole (entier) facultatif indiquant le type de données. La valeur par défaut est PDO::PARAM_STR.
De nouvelles constantes PDO ont été introduites dans PHP 7.2 pour prendre en charge la liaison des chaînes Unicode et non-Unicode. Les chaînes Unicode peuvent être placées entre guillemets avec N comme préfixe (par exemple, N'string' au lieu de 'string').
- PDO::PARAM_STR_NATL - nouveau type de chaînes Unicode à appliquer comme opérateur au niveau du bit - ou à PDO::PARAM_STR
- PDO::PARAM_STR_CHAR - nouveau type de chaînes non-Unicode à appliquer comme opérateur au niveau du bit - OU à PDO::PARAM_STR
- PDO::ATTR_DEFAULT_STR_PARAM - définir sur PDO::PARAM_STR_NATL ou PDO::PARAM_STR_CHAR pour indiquer une valeur au niveau du bit OU à PDO::PARAM_STR par défaut
À partir de la version 5.8.0, vous pouvez utiliser ces constantes avec PDO::quote.
Valeur de retour
Chaîne entre guillemets qui peut être passée à une instruction SQL ou false en cas d’échec.
Notes
La prise en charge de PDO a été ajoutée dans la version 2.0 de Pilotes Microsoft SQL Server pour PHP.
Exemple d’échappement de chaîne
<?php
$database = "test";
$server = "(local)";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
$param = 'a \' g';
$param2 = $conn->quote( $param );
$query = "INSERT INTO Table1 VALUES( ?, '1' )";
$stmt = $conn->prepare( $query );
$stmt->execute(array($param));
$query = "INSERT INTO Table1 VALUES( ?, ? )";
$stmt = $conn->prepare( $query );
$stmt->execute(array($param, $param2));
?>
Exemple PDO quote
Le script suivant montre quelques exemples de la façon dont les types de chaînes étendus affectent PDO::quote() avec PHP 7.2 +.
<?php
$database = "test";
$server = "(local)";
$db = new PDO("sqlsrv:server=$server; Database=$database", "", "");
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL); // N'über'
$db->quote('foo'); // 'foo'
$db->setAttribute(PDO::ATTR_DEFAULT_STR_PARAM, PDO::PARAM_STR_NATL);
$db->quote('über'); // N'über'
$db->quote('foo', PDO::PARAM_STR | PDO::PARAM_STR_CHAR); // 'foo'
?>