2012-05-08 32 views
13

Así que puedo eliminar una fila usando:¿Cómo eliminar múltiples filas?

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

... pero no puedo encontrar la manera de eliminar varias filas. Probé:

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

así como:

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

... pero ambos no trabajo. Siento que esto debería ser bastante fácil. Alguna respuesta?

Respuesta

32

Has probado esto?

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

de nada –

+1

¿Cómo puedo eliminar múltiples registros con la condición de eliminación en varias columnas como delete from tbl where col1 = 1 AND col2 = 2; Tengo esta condición en el conjunto de multidim –

+0

gran hallazgo .. !! esto no fue documentado en documentos de CI. Funciona como un amuleto –

0

Para borrar un solo uso consecutivas:

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

Ha intentado hacer esto? Estoy bastante seguro de que debería funcionar.

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

He intentado lo que sugirió, pero acabo de recibir un error. – Joe

3

escritura personalizada de consultas para que

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

Parece que debería funcionar ya que es la versión manual de la respuesta de @ MoyedAnsari que usa la función where_in de CI. Gracias. – Joe

6

sin necesidad de una matriz asociativa.

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

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

no es el trabajo

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

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

cuenta de una cosa no cuerda suelta/dígito ('4,5') que debe sumergió cada id con sola cita como esta ('4' , '5')

el mejor y buena forma

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

la consulta anterior habrá trabajo disfrutar ..........

+0

por qué devolver siempre 1 cuando se usa return $ this-> db-> affected_rows(); –

Cuestiones relacionadas