我有一個「事件」表。爲了簡單起見,您可以想象它應該像分層類別。它使用嵌套集模型(感謝馬克Hillyer他在http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/後)在codeigniter中執行多個不能逐個執行的查詢
我的代碼:
$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:
我無法執行$查詢與$這 - > DB->查詢($查詢);;
解決方案1,沒有工作:
I.使用的mysqli分貝引擎。
二, 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
如何糾正此代碼的工作?我很樂意爲第一個問題尋找解決方案。
你可以有一個查詢的數組,並在循環 – GordonM
沒有執行它們,你可以在這種情況下,看到執行作爲單獨的查詢不起作用,因爲它不記得'@ myRight'和'@ Level'從過去查詢的結果變量 –
直到斷開連接後變量才被保留嗎? – GordonM