Intereting Posts
Как получить максимальную ценность определенного тега в XML-файле с помощью SimpleXML? PHP: добавьте прозрачный PNG в JPEG с непрозрачностью Сессия PHP потеряна / потеряна после заголовка Подключение к базе данных MySQL с помощью PHP с устройства Android Магические методы (__get, __set) не работают в расширенном классе? Получайте содержимое корзины за пределами Magento, но в том же домене Как безопасно запретить запуск загруженного файла через PHP на любом сервере? Как отслеживать время выполнения каждой строки / блока строк / методов в PHP? Установка php и mysql для Joomla – Не удается выполнить установку Настройка фильтра для связанной модели в GridView Загрузить панель выполнения в PHP Рендеринг виджета SoundCloud для частного трека с использованием PHP API Переменные массива PHP $ _POST усечены Средневзвешенное значение Запуск glob () из включенного скрипта возвращает пустой массив

PHP PDO и DELETE с in () не работает

Вот код для класса:

class Delete_Category extends Category { private $idchain = array(); public function __construct($id) { parent::__construct(); $this->check_id($id); $this->get_delete_ids($this->id); $this->delete_category($this->idchain); } 

// Получаем все идентификаторы детей из БД и сохраняем их в массиве

  private function get_delete_ids($id) { $this->query = $this->db->prepare("SELECT id FROM `shop_categories` WHERE parent_id = :id"); $this->query->execute(array("id" => $id)); while($result = $this->query->fetch(PDO::FETCH_ASSOC)) { $this->get_delete_ids($result['id']); } $this->idchain[]= $id; } 

// Внедряем массив в строку id и бросаем его в запрос

  private function delete_category($id_array) { $id = implode(",",$id_array); try { $this->query = $this->db->prepare("DELETE FROM `shop_categories` WHERE id IN (:id)"); $this->query->execute(array(':id' => $id)); } catch(PDOException $e) { // log it{ } } } 

Дело в том, что это всегда заканчивается удалением только последнего идентификатора. Кажется, что запрос работает, потому что он выглядит тощим, если я его повторяю и заменяю: id на $ id.

// Выходная строка SQL, если эхо:

 DELETE FROM `shop_categories` WHERE id IN (11,6) 

// Если я вручную добавлю это в базу данных, он работает так, как предполагалось, поэтому проблема должна быть где-то в заявлении PDO … Может ли кто-нибудь мне помочь?

Вы можете использовать FIND_IN_SET для этого:

 DELETE FROM `shop_categories` WHERE FIND_IN_SET(id, :id)"