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
$name = 'name1';
?>
Poziční zástupný symbol v tomto případě není třeba obalovat do řetězce:
<?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
$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.