Automatyczne umieszczanie placeholderów w cudzysłowach w PDO w PHP

Technicznie rzecz biorąc, PDO wszystkie wstawiane wartości umieszcza w cudzysłowach, traktując je jako ciągi znaków, nawet jeśli faktycznie są to liczby. Jest to dopuszczalne przez składnię SQL. Dlatego placeholderów nie trzeba umieszczać w cudzysłowach, jeśli masz wartość typu string.

Spójrzmy na przykład. Załóżmy, że w zmiennej przechowywany jest ciąg znaków:

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

Pozycjonalnego placeholder'a nie trzeba umieszczać w cudzysłowie w tym przypadku:

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

Named placeholder'a również nie trzeba umieszczać w cudzysłowie:

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

To, że w zapytaniu zawsze będą ciągi znaków, niemniej czasami może prowadzić do problemów ze składnią SQL - tam, gdzie zgodnie ze składnią wymagane są liczby. W tym przypadku można skorzystać z alternatywnego sposobu wiązania parametrów, który omówimy w kolejnych lekcjach.