Автооборачнивание плейсхолдеров в кавычки в PDO в PHP
Технически PDO все ставляемые значения оборачивает в кавычки, считая их строками, даже если фактически это числа. Это допустимо синтаксисом SQL. Поэтому плейсхолдеры не нужно оборачивать в кавычки, если у вас строковое значение.
Посмотрим на примере. Пусть у нас в переменной хранится строка:
<?php
$name = 'name1';
?>
Позиционный плейсхолдер не нужно оборачивать в строку в этом случае:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Именованный плейсхолдер также не нужно оборачивать в строку:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
To, что в запросе всегда будут строки, все-таки иногда может приводить к проблемам с синтасисом SQL - там, где по синтаксису обязательно числа. В этом случае можно воспользоваться альтернативным способом привязки параметров, который мы разберем в следующих уроках.