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
$name = 'name1';
?>
En posisjonsbasert plassholder trenger ikke pakkes inn i en streng i dette tilfellet:
<?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
$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.