2012-05-08 28 views
13

Così posso eliminare una riga utilizzando:Come eliminare più righe?

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

... ma non riesco a capire come eliminare più righe. Ho provato:

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

così come:

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

... ma entrambi non funzionano. Credo che questo dovrebbe essere abbastanza facile. Qualche risposta?

risposta

32

Hai provato questo?

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

siete i benvenuti –

+1

Come posso cancellare più record con la condizione di cancellazione su più colonne come eliminare da tbl dove col1 = 1 AND col2 = 2; Ho questa condizione nell'array multidim –

+0

ottima scoperta .. !! questo non era documentato nei documenti della CI. Funziona come un fascino –

0

Per cancellare una singola riga uso:

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

Hai provato a fare questo? Sono abbastanza sicuro che dovrebbe funzionare.

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

Ho provato quello che mi hai suggerito, ma ho appena ricevuto un errore. – Joe

3

query personalizzata di scrittura per lo

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

Sembra che dovrebbe funzionare in quanto è la versione manuale della risposta di @ MoyedAnsari che utilizza la funzione where_in di CI. Grazie. – Joe

6

non necessario array associativo.

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

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

non è il lavoro

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

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

preavviso una cosa non un'unica stringa/cifra ('4,5') dovremmo essere visitato ogni id con sola citazione come questo ('4' , '5')

il modo migliore e buona

 //$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(); 

query precedente sarà lavoro godere ..........

+0

perché restituire sempre 1 quando si usa return $ this-> db-> affected_rows(); –

Problemi correlati