Avvolgimento automatico dei segnaposto tra virgolette in PDO in PHP

Tecnicamente PDO racchiude tutti i valori inseriti tra virgolette, considerandoli stringhe, anche se in realtà sono numeri. Questo è consentito dalla sintassi SQL. Pertanto, non è necessario racchiudere i segnaposto tra virgolette se si dispone di un valore stringa.

Vediamo un esempio. Supponiamo che in una variabile sia memorizzata una stringa:

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

In questo caso, non è necessario racchiudere il segnaposto posizionale tra virgolette:

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

Anche il segnaposto nominativo non deve essere racchiuso tra virgolette:

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

Il fatto che nel query ci saranno sempre stringhe, tuttavia, a volte può portare a problemi con la sintassi SQL - laddove per sintassi sono obbligatori i numeri. In questo caso, è possibile utilizzare un metodo alternativo di binding dei parametri, che esamineremo nelle prossime lezioni.