Helykitöltők automatikus idézőjelezése a PDO-ban PHP-ben

Technikailag a PDO minden bevitt értéket idézőjelek közé tesz, karakterláncnak tekinti őket, még akkor is, ha valójában számok. Ez megengedett az SQL szintaxis szerint. Ezért a helykitöltőket nem kell idézőjelek közé tenni, ha karakterlánc értéked van.

Nézzünk egy példát. Tegyük fel, hogy egy változóban egy karakterlánc van tárolva:

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

Ebben az esetben a pozicionális helykitöltőt nem kell karakterlánccá tenni:

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

A névvel ellátott helykitöltőt szintén nem kell karakterlánccá tenni:

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

Az, hogy a lekérdezésben mindig karakterláncok lesznek, attól még időnként problémákhoz vezethet az SQL szintaxissal - ott, ahol a szintaxis szerint kötelesen számoknak kell lenniük. Ebben az esetben használhatjuk a paraméterek kötésének alternatív módját, amelyet a következő leckékben fogunk megvizsgálni.