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<?php
  $name = 'name1';
?>

Nesse caso, não é necessário encapsular um placeholder posicional entre aspas:

php<?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<?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.