Стажировка
Открыта запись на бесплатный пробный месяц! Жми для подробностей! →
⊗ppSpPDPP 72 of 95 menu
Бесплатный курс: Практика на Реальных Проектах и Работы в Портфолио! Мы уже начали, но можно присоединится! Жми для записи!

Позиционные плейсхолдеры в PDO в PHP

Давайте разберемся, как работать с позиционными плейсхолдерами. Пусть у нас есть две переменных, которые мы хотели бы вставить в запрос:

<?php $min = 1; $max = 5; ?>

Пусть мы хотим вставить наши переменные следующим образом:

<?php $sql = "SELECT * FROM users WHERE id>$min and id<$max"; ?>

Так, однако, делать не безопасно. Поэтому вместо того, чтобы вставлять переменные напрямую, заменим их на позиционные плейсхолдеры, которые представляют собой знаки вопросов:

<?php $sql = 'SELECT * FROM users WHERE id>? and id<?'; ?>

Теперь выполним команду, которая подготовит запрос:

<?php $res = $pdo->prepare($sql); ?>

Теперь выполним запрос, передав ему параметрами массив, содержащий наши переменные. При этом переменные будут вставлены в запрос в таком порядке, как они указаны в массиве:

<?php $res->execute([$min, $max]); ?>

После этого можем получить результат запроса:

<?php while ($row = $res->fetch()) { var_dump($row); } ?>

Соберем все вместе и получим следующий код:

<?php $min = 1; $max = 5; $sql = 'SELECT * FROM users WHERE id>? and id<?'; $res = $pdo->prepare($sql); $res->execute([$min, $max]); while ($row = $res->fetch()) { var_dump($row); } ?>

Даны переменные:

<?php $age = 30; $salary = 1000; ?>

Найдите всех пользователей, у которых возраст или зарплата равны заданным в переменных значениям.

Попробуйте провести SQL-инъекцию в ваш код. Убедитесь, что она не пройдет.

kkbyuzruhi