Autoenvoltura de marcadores de posición entre comillas en PDO en PHP
Técnicamente, PDO envuelve entre comillas todos los valores insertados, considerándolos cadenas, incluso si en realidad son números. Esto es permitido por la sintaxis SQL. Por lo tanto, no es necesario envolver los marcadores de posición entre comillas si tienes un valor de tipo cadena.
Veamos un ejemplo. Supongamos que tenemos una cadena almacenada en una variable:
<?php
$name = 'name1';
?>
No es necesario envolver un marcador de posición posicional entre comillas en este caso:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Tampoco es necesario envolver un marcador de posición con nombre entre comillas:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
El hecho de que en la consulta siempre habrá cadenas, de todos modos a veces puede llevar a problemas con la sintaxis SQL - en aquellos casos donde por sintaxis se requieren obligatoriamente números. En este caso, se puede utilizar un método alternativo de enlazar parámetros, que analizaremos en las siguientes lecciones.