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
$name = 'name1';
?>
Paikkamerkkiä ei tarvitse kääriä merkkijonoon tässä tapauksessa:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Nimettyä paikkamerkkiä ei myöskään tarvitse kääriä merkkijonoon:
<?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.