Automatisches Einschließen von Platzhaltern in Anführungszeichen in PDO in PHP
Technisch gesehen schließt PDO alle eingesetzten Werte in Anführungszeichen ein und betrachtet sie als Strings, sogar wenn es sich tatsächlich um Zahlen handelt. Dies ist durch die SQL-Syntax zulässig. Daher müssen Platzhalter nicht in Anführungszeichen eingeschlossen werden, wenn es sich um einen String-Wert handelt.
Betrachten wir ein Beispiel. Angenommen, in einer Variable ist ein String gespeichert:
<?php
$name = 'name1';
?>
Ein positioneller Platzhalter muss in diesem Fall nicht in Anführungszeichen eingeschlossen werden:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Ein benannter Platzhalter muss ebenfalls nicht in Anführungszeichen eingeschlossen werden:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
Dass im Query immer Strings verwendet werden, kann dennoch manchmal zu Problemen mit der SQL-Syntax führen - dort, wo die Syntax zwingend Zahlen erfordert. In diesem Fall kann man auf alternative Methoden zur Parameterbindung zurückgreifen, die wir in den folgenden Lektionen behandeln werden.