PDO::quote
Elabora una stringa da usare in una query, inserendo le virgolette per racchiudere la stringa di input come richiesto dal database di SQL Server sottostante. PDO::quote ignorerà i caratteri speciali all'interno della stringa di input usando uno stile di delimitazione appropriato per SQL Server.
Sintassi
string PDO::quote( $string[, $parameter_type ] )
Parametri
$string: stringa da delimitare.
$parameter_type: simbolo (intero) facoltativo che indica il tipo di dati. Il valore predefinito è PDO::PARAM_STR.
In PHP 7.2 sono state introdotte nuove costanti PDO per aggiungere il supporto per l'associazione di stringhe Unicode e non Unicode. Le stringhe Unicode possono essere racchiuse tra virgolette con N come prefisso (ad esempio N'string' invece di 'string').
- PDO::PARAM_STR_NATL: un nuovo tipo per le stringhe Unicode da applicare come OR bit per bit a PDO::PARAM_STR
- PDO::PARAM_STR_CHAR: un nuovo tipo per le stringhe non Unicode da applicare come operatore OR bit per bit a PDO::PARAM_STR
- PDO::ATTR_DEFAULT_STR_PARAM: da impostare su PDO::PARAM_STR_NATL o su PDO::PARAM_STR_CHAR per indicare un valore all'operatore OR bit per bit o a PDO::PARAM_STR per impostazione predefinita
A partire dalla versione 5.8.0, è possibile usare queste costanti con PDO::quote.
Valore restituito
Stringa tra virgolette che può essere passata a un'istruzione SQL o false in caso di errore.
Osservazioni:
Il supporto per PDO è stato aggiunto nella versione 2.0 dei driver Microsoft per PHP per SQL Server.
Esempio di string escape
<?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));
?>
Esempio di PDO quote
Lo script seguente mostra alcuni esempi di come i tipi di stringhe estesi influiscono su PDO::quote() con PHP 7.2 e versioni successive.
<?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'
?>