PDO::quote
Processa uma cadeia de caracteres para uso em uma consulta, colocando a cadeia de caracteres de entrada entre aspas, conforme exigido pelo banco de dados do SQL Server subjacente. O PDO::quote insere um caractere de escape antes de caracteres especiais na cadeia de caracteres de entrada, usando um estilo de aspas adequado ao SQL Server.
Sintaxe
string PDO::quote( $string[, $parameter_type ] )
Parâmetros
$string: a cadeia de caracteres a ser cotada.
$parameter_type: um símbolo opcional (inteiro) que indica o tipo de dados. O padrão é PDO::PARAM_STR.
Novas constantes PDO foram introduzidas no PHP 7.2 para adicionar suporte para cadeias de caracteres Unicode e não Unicode de associação. As cadeias de caracteres Unicode podem ser colocadas entre aspas com um N como prefixo (ou seja, N"cadeia de caracteres" em vez de "cadeia de caracteres").
- PDO::P ARAM_STR_NATL – um novo tipo de cadeias de caracteres Unicode, a ser aplicado como um bitwise-OR para PDO::PARAM_STR
- PDO::P ARAM_STR_CHAR – um novo tipo de cadeias de caracteres não Unicode, a ser aplicado como um bitwise-OR para PDO::PARAM_STR
- PDO:: ATTR_DEFAULT_STR_PARAM – configure como PDO::PARAM_STR_NATL ou PDO::PARAM_STR_CHAR para indicar um valor para bitwise-OR para PDO::PARAM_STR por padrão
Com a versão 5.8.0 será possível usar essas constantes com PDO::quote.
Valor de retorno
Uma cadeia de caracteres entre aspas que pode ser passada para uma instrução SQL ou false se falhar.
Comentários
O suporte para PDO foi adicionado na versão 2.0 dos Drivers da Microsoft para PHP para SQL Server.
Exemplo de escape de cadeia de caracteres
<?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));
?>
Exemplo de cotação de PDO
O script a seguir mostra alguns exemplos de como os tipos de cadeia de caracteres estendidos afetam PDO::quote() com o 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'
?>