PDO::prepare() — подготовка SQL-запроса
prepare() создаёт PDOStatement; значения передаются отдельно через execute() или bindValue().
PDO::prepare(string $query, array $options = []): PDOStatement|falseРабочий пример
<?php
$stmt = $pdo->prepare(
'SELECT id, name FROM users WHERE email = :email'
);
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();Именованные параметры
Имена делают длинный запрос читаемее. Не добавляйте двоеточие в ключ массива execute(): в SQL используется :email, а в массиве — email.
Что нельзя параметризовать
Placeholder обозначает только значение. Для ORDER BY, таблицы или имени поля создайте белый список допустимых идентификаторов и выберите один из них до сборки SQL.
Состояние объекта
До execute() statement содержит подготовленную структуру запроса. После выполнения доступны rowCount(), fetch() и errorInfo(), но точное поведение rowCount() для SELECT зависит от драйвера.
Ошибки
Нельзя смешивать позиционные `?` и именованные параметры в одном выражении. Повторное использование одного именованного placeholder также зависит от режима эмуляции и не должно считаться переносимым.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.