Autoencapsulamento de placeholders entre aspas no PDO em PHP
Tecnicamente, o PDO encapsula todos os valores inseridos entre aspas, tratando-os como strings, mesmo que sejam, na verdade, números. Isso é permitido pela sintaxe SQL. Portanto, não é necessário encapsular os placeholders entre aspas se você tiver um valor do tipo string.
Vejamos um exemplo. Suponha que tenhamos uma string armazenada em uma variável:
<?php
$name = 'name1';
?>
Nesse caso, não é necessário encapsular um placeholder posicional entre aspas:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare($sql);
$res->execute([$name]);
?>
Um placeholder nomeado também não precisa ser encapsulado entre aspas:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare($sql);
$res->execute(['name' => $name]);
?>
O fato de as consultas sempre tratarem os valores como strings pode, às vezes, levar a problemas de sintaxe SQL - em situações onde a sintaxe exige obrigatoriamente números. Nesse caso, pode-se usar um método alternativo de vinculação de parâmetros, que abordaremos nas próximas lições.