Автоматично обвиване на плейсхолдери в кавички в 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]);
?>

Фактът, че в заявката винаги ще има низове, все пак понякога може да доведе до проблеми със синтаксиса на SQL - там, където по синтаксис задължително са необходими числа. В този случай може да се използва алтернативен начин за свързване на параметри, който ще разгледаме в следващите уроци.