«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обрабатывать запросы «WHERE... IN» с помощью PDO при удалении нескольких записей?

Как обрабатывать запросы «WHERE... IN» с помощью PDO при удалении нескольких записей?

Опубликовано 13 ноября 2024 г.
Просматривать:420

How to Handle \

Обработка запросов «WHERE... IN» с помощью PDO

При использовании PDO для доступа к базе данных управление запросами с помощью «WHERE...» Предложения IN» могут представлять собой проблему. Рассмотрим следующий сценарий: вам необходимо удалить записи из таблицы базы данных на основе списка проверенных элементов формы, представленного как «$idlist» с переменной длиной и содержимым (например, «260,201,221,216,217,169,210,212,213»).

Первоначально, использование запроса, подобного приведенному ниже, может показаться логическое:

$query = "DELETE from `foo` WHERE `id` IN (:idlist)";

Однако этот подход удаляет только первый идентификатор. Запятые и последующие идентификаторы ошибочно игнорируются.

Чтобы решить эту проблему, крайне важно понимать поведение подготовленных операторов в PDO. Значения можно привязать к заполнителям с помощью нумерованных или именованных параметров. Для запроса «ГДЕ... В» каждый идентификатор в списке должен иметь свой собственный заполнитель.

Решение требует динамического подхода:

$idlist = array('260', '201', '221', '216', '217', '169', '210', '212', '213');

$questionmarks = str_repeat("?,", count($idlist) - 1) . "?";

$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");

Затем привяжите каждый идентификатор к соответствующему знаку вопроса:

for ($i = 0; $i bindParam($i   1, $idlist[$i]);
}

Этот метод гарантирует, что каждый элемент в списке правильно привязан к заполнителю, что позволяет запросу успешно удалить нужные записи.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3