Automatisk citation av platshållare i PDO i PHP
Tekniskt sett omsluter PDO alla insatta värden i citationstecken och behandlar dem som strängar, även om de faktiskt är siffror. Detta är tillåtet enligt SQL-syntax. Därför behöver platshållare inte omslutas av citationstecken om du har ett strängvärde.
Låt oss titta på ett exempel. Låt oss säga att vi har en sträng lagrad i en variabel:
<?php
$name = 'name1';
?>
En positionsplatshållare behöver inte omslutas av ett citationstecken i det här fallet:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
En namngiven platshållare behöver heller inte omslutas av citationstecken:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
Att det alltid kommer att vara strängar i förfrågan kan ibland ändå leda till problem med SQL-syntaxen - där siffror är obligatoriska enligt syntaxen. I det här fallet kan man använda ett alternativt sätt att binda parametrar, som vi kommer att gå igenom i kommande lektioner.