Autoompakking av plassholdere i anførselstegn i PDO i PHP

Teknisk sett pakker PDO alle innsatte verdier inn i anførselstegn, og behandler dem som strenger, selv om de faktisk er tall. Dette er tillatt av SQL-syntaksen. Derfor trenger ikke plassholdere pakkes inn i anførselstegn hvis du har en strengverdi.

La oss se på et eksempel. Anta at vi har en streng lagret i en variabel:

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

En posisjonsbasert plassholder trenger ikke pakkes inn i en streng i dette tilfellet:

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

En navngitt plassholder trenger heller ikke pakkes inn i en streng:

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

At det alltid vil være strenger i spørringen, kan likevel noen ganger føre til problemer med SQL-syntaksen - der hvor syntaksen krevde tall. I dette tilfellet kan du bruke en alternativ metode for parameterbinding, som vi skal se på i de følgende leksjonene.