Автоматично обвиване на плейсхолдери в кавички в 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]);
?>
Фактът, че в заявката винаги ще има низове, все пак понякога може да доведе до проблеми със синтаксиса на SQL - там, където по синтаксис задължително са необходими числа. В този случай може да се използва алтернативен начин за свързване на параметри, който ще разгледаме в следващите уроци.