Подготовленные запросы без мифов
Prepared statements отделяют SQL-код от значений, но не параметризуют таблицы и ORDER BY.
$pdo->prepare('SELECT * FROM users WHERE id = :id')Последовательность
prepare() создаёт statement, execute() передаёт значения, fetch() читает результат. Один statement можно выполнять повторно с разными значениями.
Типы
execute(['id' => $id]) обычно достаточно. bindValue() нужен, когда важен PDO::PARAM_* или значение формируется до выполнения.
IN список
Создайте отдельный placeholder для каждого значения. Нельзя передать массив одному `IN (:ids)` и ожидать автоматического раскрытия.
Граница
Имена колонок выбираются из заранее известного отображения UI → SQL. Экранирование строки не превращает пользовательский идентификатор в безопасный SQL.
Задание
Постройте фильтр по трём статусам через Named Placeholder Generator и объясните порядок аргументов.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.