Automaattinen paikkamerkkien lainausmerkeissä kääriminen PDO:ssa PHP:ssä

Teknisesti ottaen PDO käärii kaikki syötetyt arvot lainausmerkkeihin, pitäen niitä merkkijonoina, vaikka ne olisivatkin käytännössä numeroita. Tämä on sallittua SQL-syntaksilla. Siksi paikkamerkkejä ei tarvitse kääriä lainausmerkkeihin, jos sinulla on merkkijonoarvo.

Katsotaan esimerkkiä. Oletetaan, että muuttujassa on tallennettuna merkkijono:

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

Paikkamerkkiä ei tarvitse kääriä merkkijonoon tässä tapauksessa:

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

Nimettyä paikkamerkkiä ei myöskään tarvitse kääriä merkkijonoon:

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

Se, että kyselyssä on aina merkkijonoja, voi kuitenkin joskus johtaa ongelmiin SQL-syntaksin kanssa - paikoissa, joissa syntaksin mukaan vaaditaan pakosti numeroita. Tässä tapauksessa voit käyttää vaihtoehtoista tapaa liittää parametreja, jota käsittelemme seuraavissa oppitunneissa.