"イベント"テーブルがあります。簡単にするために、階層カテゴリのようにする必要があります。コードネイターで1つずつ実行できない複数のクエリを実行しています
$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:
私は$クエリを実行できませんでしたます$ this-> DB->クエリ($クエリ)を持ちます。;動作しませんでした
解決方法1:
I.使用mysqliのデシベルエンジン。
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
このコードを修正するにはどうすればよいですか?私は最初の問題の解決策を見つけることさえ嬉しいです。
あなたは、単一のクエリの配列を持っており、それは思い出すことができないので、あなたが別のクエリは動作しないよう実行し、この場合に見ることができるように、ループ – GordonM
ないでそれらを実行することができます過去のクエリの結果から '@ myRight'と' @ Level'を返します –
あなたが切断するまで変数は保持されませんか? – GordonM