(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)
PDO::quote — Protege una cadena para usarla en una consulta SQL PDO
PDO::quote() coloca comillas simples alrededor de una cadena de entrada, si es necesario y protege los caracteres especiales presentes en la cadena de entrada, utilizando el estilo de protección apropiado al controlador actual.
Si se utiliza esta función para construir consultas SQL, se recomienda encarecidamente usar PDO::prepare() para preparar las consultas SQL con parámetros vinculados en lugar de usar PDO::quote() para interpretar las entradas del usuario en la consulta SQL. Las consultas preparadas con parámetros vinculados no solo son más portables, flexibles y seguras, sino también más rápidas de ejecutar que interpretar las consultas, ya que los lados cliente y servidor pueden almacenar en caché una versión compilada de la consulta.
No todos los controladores PDO implementan este método (como PDO_ODBC). Utilice consultas preparadas en su lugar.
El juego de caracteres debe ser definido ya sea a nivel del servidor, o durante la conexión a la base de datos (dependiendo del driver utilizado) para que afecte al método PDO::quote(). Ver la documentación específica del driver para más información.
string
La cadena a proteger.
type
El tipo de datos para los drivers que tienen estilos particulares
de protección.
Proporciona una pista al tipo de dato para los controladores que tienen un estilo
de escape diferente. Por ejemplo PDO_PARAM_LOB
indica al controlador que escape datos binarios.
Devuelve una cadena protegida, que es teóricamente segura para usar
en una consulta SQL. Devuelve false
si el controlador no soporta
este tipo de protecciones.
Ejemplo #1 Protección de una cadena normal
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Cadena simple */
$string = 'Nice';
print "Cadena no escapada : $string\n";
print "Cadena escapada : " . $conn->quote($string) . "\n";
?>
El resultado del ejemplo sería:
Cadena no escapada : Nice Cadena escapada: 'Nice'
Ejemplo #2 Protección de una cadena peligrosa
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Cadena peligrosa */
$string = 'Cadena \' particular';
print "Cadena no escapada : $string\n";
print "Cadena escapada :" . $conn->quote($string) . "\n";
?>
El resultado del ejemplo sería:
Cadena no escapada : Cadena ' particular Cadena escapada : 'Cadena '' particular'
Ejemplo #3 Protección de una cadena compleja
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Cadena compleja */
$string = "Co'mpl''exe \"ch'\"aîne";
print "Cadena no escapada : $string\n";
print "Cadena escapada : " . $conn->quote($string) . "\n";
?>
El resultado del ejemplo sería:
Cadena no escapada: Co'mpl''exe "ch'"aîne Cadena escapada: 'Co''mpl''''exe "ch''"aîne'