2012-05-08 24 views
13

So kann ich eine Zeile mit löschen:Wie lösche ich mehrere Zeilen?

$this->db->delete($tableName,array("id"=>4)); 

... aber ich kann nicht herausfinden, wie mehrere Zeilen zu löschen. Ich habe versucht:

$this->db->delete($tableName,array("id"=>4,"id"=5)); 

sowie:

$this->db->delete($tableName,array(array("id"=>4),array("id"=5))); 

... aber beide funktionieren nicht. Ich denke, das sollte ziemlich einfach sein. Irgendwelche Antworten?

Antwort

32

Haben Sie versucht das?

$names = array(4,5); 
$this->db->where_in('id', $names); 
$this->db->delete('mytable'); 
+0

Sie sind willkommen –

+1

Wie kann ich mehrere Datensätze mit Löschbedingung für mehrere Spalten wie löschen aus Tab löschen, wo col1 = 1 AND col2 = 2; Ich habe diese Bedingung in Multi-Array-Array –

+0

großen Fund .. !! Dies wurde in CI-Dokumenten nicht dokumentiert. Funktioniert wie ein Charm –

0

Um eine einzelne Anwendung Zeile zu löschen:

$this->db->delete('TABLE_NAME', array('id' => 5)); 

Haben Sie versucht, dies zu tun? Ich bin mir ziemlich sicher, dass es funktionieren sollte.

$this->db->delete('TABLE_NAME', array(array('id' => 5), array('id' => 3), ...)); 
+0

Ich hatte versucht, was Sie vorgeschlagen, aber nur einen Fehler bekommen. – Joe

3

Schreib benutzerdefinierte Abfrage für sie

$this->db->query("DELETE FROM `TABLE_NAME` WHERE `id` IN(1,2,3,4,5)"); 
+0

Es sieht so aus, als ob es funktionieren sollte, da es die manuelle Version von @ MoyedAnsaris Antwort ist, die die where_in-Funktion von CI verwendet. Vielen Dank. – Joe

6

nicht von assoziativen Array.

$ids[] = 1; 
$ids[] = 2; 

$this->db->where_in(id, $ids); 
$this->db->delete('Table_Name'); 
1

es wird nicht funktionieren

$names = array(4,5); 
$this->db->where_in('id', $names); 
$this->db->delete('mytable'); 

DELETE FROM table_name WHERE id IN ('4,5') 

Mitteilung eine Sache nicht Einzelsaite/Ziffer (‚4,5‘) wir jeden tauchte id mit einfachen Anführungszeichen wie folgt aus (‚4‘ sollte , '5')

der beste und guter Weg

 //$ids = 1,2,3..... 
     $ids_exp = explode(',',$ids); 
     $this->db->where_in('id',$ids_exp);// 
     $this->db->delete('table_name') 
     return $this->db->affected_rows(); 

die obige Abfrage Arbeit genießen sein wird ..........

+0

Warum immer 1 zurückgeben, wenn Sie return $ this-> db-> affected_rows(); –