PDO::quote
Procesa una cadena para utilizarla en una consulta colocando comillas alrededor de la cadena de entrada conforme a los requisitos de la base de datos de SQL Server subyacente. PDO::quote usará caracteres especiales de escape en la cadena de entrada aplicando un estilo de entrecomillado que admita SQL Server.
Sintaxis
string PDO::quote( $string[, $parameter_type ] )
Parámetros
$string: la cadena que se entrecomillará.
$parameter_type: un símbolo opcional (valor entero) que indica el tipo de datos. El valor predeterminado es PDO::PARAM_STR.
Las nuevas constantes de PDO se introdujeron en PHP 7.2 para agregar compatibilidad para enlazar cadenas Unicode y no Unicode. Las cadenas Unicode se pueden incluir entre comillas con N como prefijo (es decir, N'string ' en lugar de 'string').
- PDO::PARAM_STR_NATL: un tipo nuevo de cadenas Unicode que se aplicará como OR bit a bit a PDO::PARAM_STR
- PDO::PARAM_STR_CHAR: un tipo nuevo de cadenas no Unicode que se aplicará como OR bit a bit a PDO::PARAM_STR
- PDO::ATTR_DEFAULT_STR_PARAM: se establece en PDO::PARAM_STR_NATL o PDO::PARAM_STR_CHAR para indicar un valor para OR bit a bit a PDO::PARAM_STR de manera predeterminada
A partir de la versión 5.8.0, puede utilizar estas constantes con PDO::quote.
Valor devuelto
Cadena entre comillas que se puede pasar a una instrucción SQL o false si se produce un error.
Comentarios
En la versión 2.0 de los Controladores de Microsoft para PHP para SQL Server, se agregó compatibilidad con PDO.
Ejemplo de escape de cadena
<?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));
?>
Ejemplo de comillas de PDO
El script siguiente muestra algunos ejemplos de cómo afectan los tipos de cadenas extendidas a PDO::quote() con 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'
?>