PDO::quote

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.1)

PDO::quote Entrecomilla una cadena de caracteres para usarla en una consulta

Descripción

public PDO::quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] ) : string

PDO::quote() entrecomilla el string de entrada (si fuera necesario) y escapa los caracteres especiales contenidos en dicho string, usando un estilo de entrecomillado apropiado para el controlador subyacente.

Si se usa esta función para construir sentencias SQL, se recomienda encarecidamente usar PDO::prepare() para preparar sentencias SQL con los parámetros vinculados en vez de usar PDO::quote() para interpolar entradas del usuario en una consulta SQL. Las sentencias preparadas con parámetros vinculados no son sólo más portables, más convenientes, e inmunes a inyecciones SQL, sino que son mucho más rápidas de ejecutar que las consultas interpoladas, ya que tanto el lado del servidor como el del cliente pueden almacenar en caché una forma compilada de la consulta.

No todos los controladores de PDO implementan este método (como ejemplo notable, PDO_ODBC). En su lugar, se ha de considerar el uso de sentencias preparadas.

Precaución

Seguridad: el conjunto de caracteres predeterminado

El conjunto de caracteres debe establecerse o bien al nivel del servidor, o dentro de la misma conexión a la base de datos (dependiendo del controlador) para que afecte a PDO::quote(). Véase la documentación específica del controlador para más información.

Parámetros

string

La cadena de caracteres a entrecomillar.

parameter_type

Proporciona una declaración de tipo de datos para los controladores que tengan un estilo de entrecomillado alternativo.

Valores devueltos

Devuelve un string entrecomillado teóricamente seguro para pasarlo a una sentencia SQL. Devuelve FALSE si el controlador no soporta el entrecomillado en esta forma.

Ejemplos

Ejemplo #1 Entrecomillar una cadena de caracteres normal

<?php
$conexión 
= new PDO('sqlite:/home/lynn/music.sql3');

/* Cadena simple */
$cadena 'Agradable';
print 
"Cadena sin entrecomillar: $cadena\n";
print 
"Cadena entrecomillada: " $conexión->quote($cadena) . "\n";
?>

El resultado del ejemplo sería:

Cadena sin entrecomillar: Agradable
Cadena entrecomillada: 'Agradable'

Ejemplo #2 Entrecomillar una cadena peligrosa

<?php
$conexión 
= new PDO('sqlite:/home/lynn/music.sql3');

/* Cadena peligrosa */
$cadena 'Cadena \' desagradable';
print 
"Cadena sin entrecomillar: $cadena\n";
print 
"Cadena entrecomillada:" $conexión->quote($cadena) . "\n";
?>

El resultado del ejemplo sería:

Cadena sin entrecomillar: Cadena ' desagradable
Cadena entrecomillada: 'Cadena '' desagradable'

Ejemplo #3 Entrecomillar una cadena compleja

<?php
$conexión 
= new PDO('sqlite:/home/lynn/music.sql3');

/* Cadena compleja */
$cadena "Ca'de''na \"co'\"mpleja";
print 
"Cadena sin entrecomillar: $cadena\n";
print 
"Cadena entrecomillada: " $conexión->quote($cadena) . "\n";
?>

El resultado del ejemplo sería:

Cadena sin entrecomillar: Ca'de''na "co'"mpleja
Cadena entrecomillada: 'Ca''de''''na "co''"mpleja'

Ver también