Automatické uvozování zástupných symbolů v PDO v PHP

Technicky PDO všechny vkládané hodnoty obalí uvozovkami a považuje je za řetězce, i když se ve skutečnosti jedná o čísla. To je přípustné syntaxí SQL. Proto není nutné zástupné symboly obklopovat uvozovkami, pokud máte řetězcovou hodnotu.

Podívejme se na příklad. Předpokládejme, že v proměnné je uložen řetězec:

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

Poziční zástupný symbol v tomto případě není třeba obalovat do řetězce:

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

Pojmenovaný zástupný symbol také není třeba obalovat do řetězce:

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

Skutečnost, že v dotazu budou vždy řetězce, může někdy vést k problémům se syntaxí SQL - tam, kde syntaxe vyžaduje čísla. V tomto případě lze použít alternativní způsob vázání parametrů, který si probereme v následujících lekcích.