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<?php
  $name = 'name1';
?>

En positionsplatshållare behöver inte omslutas av ett citationstecken i det här fallet:

php<?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<?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.