Автоматско завиткување на плејсхолдери во наводници во PDO во PHP

Технички PDO ги става сите внесени вредности во наводници, сметајќи ги за стрингови, дури и ако тие се броеви. Ова е дозволено со синтаксата на SQL. Затоа плејсхолдерите не треба да ги ставате во наводници, ако имате стринговска вредност.

Да погледнеме на пример. Нека во променливата ни е зачуван стринг:

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

Позициониот плејсхолдер не треба да се става во наводници во овој случај:

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

Именуваниот плејсхолдер исто така не треба да се става во наводници:

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

Фактот дека во барањето секогаш ќе има стрингови, сепак понекогаш може да доведе до проблеми со синтаксата на SQL - таму каде што синтаксата бара броеви. Во овој случај може да се користи алтернативен начин на врзување на параметрите, кој ќе го разгледаме во следните лекции.