Автооборачнивание плейсхолдеров в кавычки в PDO в PHP

Технически PDO все ставляемые значения оборачивает в кавычки, считая их строками, даже если фактически это числа. Это допустимо синтаксисом SQL. Поэтому плейсхолдеры не нужно оборачивать в кавычки, если у вас строковое значение.

Посмотрим на примере. Пусть у нас в переменной хранится строка:

php<?php
  $name = 'name1';
?>

Позиционный плейсхолдер не нужно оборачивать в строку в этом случае:

php<?php
  $sql = 'SELECT * FROM users WHERE name=?';
  $res = $pdo->prepare();
  $res->execute([$name]);
?>

Именованный плейсхолдер также не нужно оборачивать в строку:

php<?php
  $sql = 'SELECT * FROM users WHERE name=:name';
  $res = $pdo->prepare();
  $res->execute(['name' => $name]);
?>

To, что в запросе всегда будут строки, все-таки иногда может приводить к проблемам с синтасисом SQL - там, где по синтаксису обязательно числа. В этом случае можно воспользоваться альтернативным способом привязки параметров, который мы разберем в следующих уроках.