В этой записи вы узнаете как использовать позиционные и именные плейсхолдеры в подготовленных запросах.
Позиционные
Обратите внимание на запрос:
$title = 'PHP%'; $author = 'Bobi%'; // query $sql = "SELECT * FROM books WHERE title like ? AND author like ? "; $q = $conn->prepare($sql); $q->execute(array($title,$author));
В запросе использованы знаки вопроса в той позиции в которой должны быть какие то данные. Знаками вопроса (?) отмечены места где должны быть вызваны позиционные плейсхолдеры. Мы должны позаботиться о порядке элементов в массиве при вызове метода PDOStatement::execute().
Именные
Следующий запрос:
$title = 'PHP%'; $author = 'Bobi%'; // query $sql = "SELECT * FROM books WHERE title like :title AND author like :author "; $q = $conn->prepare($sql); $q->execute(array(':author'=>$author, ':title'=>$title));
В этом случае мы используем описательные имена вместо знаков вопроса. Также нам не важен порядок размещения элементов в массиве, так как используется ассоциативный массив.
Предыдущая: PDO: Подготовленная выборка
Следующая: PDO: Запросы Insert и Update с использованием подготовленной выборки