У меня есть таблица "событий". Для простоты вы можете представить, что это должно быть похоже на иерархическую категорию . Он использует модель вложенного набора (Спасибо Марку Хиллеру за его пост в http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/)
Мой код:
$query =
"LOCK TABLE event WRITE;
SELECT @ParentRight := parent.rgt, @Level := parent.level FROM event AS parent WHERE parent.id = '{$data['parent_id']}';
UPDATE event SET rgt = rgt + 2 WHERE rgt > @ParentRight;
UPDATE event SET lft = lft + 2 WHERE lft > @ParentRight;
INSERT INTO event(lft, rgt, level) VALUES(@ParentRight, @ParentRight + 1, @Level);
UNLOCK TABLES;";
mysqli_multi_query($this->db->conn_id, $query);
$data['id'] = $this->db->insert_id();
return $this->db->update('event', $data);
И после этого я собираюсь обновить последний вставленный объект с помощью $this->db->update('event', $data)
$data
- это массив, который заполнил пользователь.
Задача 1:
Я не смог выполнить $ query с $ this-> db-> query ($ query); ;
Решение 1, которое не сработало:
I. Используйте mysqli db engine.
II. mysqli_multi_query($this->db->conn_id, $query);
Хотя я думал, что это работает, выдает следующую ошибку:
Commands out of sync; you can’t run this command now.
Задача 2:
$this->db->insert_id()
не работает (возвращает 0)
Задача 3:
$this->db->update('event', $data);
ошибок:
Commands out of sync; you can't run this command now
Как я могу исправить этот код для работы? Я был бы даже рад найти решение для первой проблемы.