Автоматско завиткување на плејсхолдери во наводници во PDO во PHP
Технички PDO ги става сите внесени вредности во наводници, сметајќи ги за стрингови, дури и ако тие се броеви. Ова е дозволено со синтаксата на SQL. Затоа плејсхолдерите не треба да ги ставате во наводници, ако имате стринговска вредност.
Да погледнеме на пример. Нека во променливата ни е зачуван стринг:
<?php
$name = 'name1';
?>
Позициониот плејсхолдер не треба да се става во наводници во овој случај:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare($sql);
$res->execute([$name]);
?>
Именуваниот плејсхолдер исто така не треба да се става во наводници:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare($sql);
$res->execute(['name' => $name]);
?>
Фактот дека во барањето секогаш ќе има стрингови, сепак понекогаш може да доведе до проблеми со синтаксата на SQL - таму каде што синтаксата бара броеви. Во овој случај може да се користи алтернативен начин на врзување на параметрите, кој ќе го разгледаме во следните лекции.