Вот код для класса:
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;
}
// Вставить массив в строку идентификатора и выбросить его в запросе
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 ... Кто-нибудь может мне помочь?