Но чаще всего нам приходится использовать переменную или две в запросе, и в таком случае мы должны использовать подготовленный запрос (также называемый запросом с параметрами), сначала подготавливая запрос с параметрами (или плейсхолдерами), а затем выполняя его, передавая переменные отдельно.
В PDO мы можем использовать как позиционные, так и именованные плейсхолдеры. Для простых запросов лично я предпочитаю позиционные заполнители, мне они кажутся менее громоздкими, но это дело вкуса.
Содержание
Запрос SELECT с позиционными заполнителями
// выбрать конкретного пользователя по id
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$id]);
$user = $stmt->fetch();
Запрос SELECT с именованными заполнителями
// выбрать конкретного пользователя по id
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id");
$stmt->execute(['id' => $id]);
$user = $stmt->fetch();
Выбор нескольких строк
Получение нескольких строк с помощью подготовленного запроса будет идентично показанному выше запросу:
$stmt = $pdo->prepare("SELECT * FROM users LIMIT ?, ?");
$stmt->execute([$limit, $offset]);
while ($row = $stmt->fetch()) {
echo $row['name']."<br />\n";
}
Или:
$stmt = $pdo->prepare("SELECT * FROM users LIMIT :limit, :offset");
$stmt->execute(['limit' => $limit, 'offset' => $offset]);
$data = $stmt->fetchAll();
// где-то позднее:
foreach ($data as $row) {
echo $row['name']."<br />\n";
}