Ho una tabella "evento". Per semplicità, puoi immaginare che dovrebbe essere come una categoria gerarchica. Esso utilizza il nidificato modello di set (Grazie a Mark Hillyer per il suo posto a http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/)Esecuzione di più query in codeigniter che non possono essere eseguite una per una
Il mio codice:
$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);
E dopo che ho intenzione di aggiornare l'ultimo oggetto inserito con $this->db->update('event', $data)
$data
è una matrice che l'utente ha riempito.
Problema 1:
non ho potuto eseguire $ query con $ this-> db-> query ($ query);;
Soluzione 1 che non ha funzionato:
I. Usa mysqli motore db.
II. mysqli_multi_query($this->db->conn_id, $query);
Mentre ho pensato che funziona, sta dando il seguente errore:
Commands out of sync; you can’t run this command now.
Problema 2:
$this->db->insert_id()
non funziona (restituisce 0)
Problema 3:
$this->db->update('event', $data);
errori: Commands out of sync; you can't run this command now
Come posso correggere questo codice per funzionare? Sarei persino felice di trovare una soluzione per il primo problema.
Si potrebbe avere una serie di domande singole ed eseguirli in un ciclo – GordonM
No, come si può vedere in questo caso l'esecuzione di query separate non funziona, perché non riesco a ricordare I risultati di '@ myRight' e' @ Level' dei risultati delle query precedenti –
Le variabili non vengono conservate fino alla disconnessione? – GordonM