如何删除多行?

时间:2012-05-08 03:22:11

标签: database codeigniter

所以我可以使用以下方法删除一行:

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

...但我无法弄清楚如何删除多行。我试过了:

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

以及:

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

......但它们都不起作用。我觉得这应该很容易。有什么答案吗?

6 个答案:

答案 0 :(得分:35)

你试过这个吗?

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

答案 1 :(得分:6)

不需要关联数组。

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

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

答案 2 :(得分:3)

为它编写自定义查询

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

答案 3 :(得分:1)

它不起作用

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

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

注意一件事不是单个字符串/数字(' 4,5')我们应该用这样的单引号潜入每个id(' 4',' 5&#39)

最好的方式

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

上面的查询将是工作享受..........

答案 4 :(得分:0)

删除单个用途行:

$this->db->delete('TABLE_NAME', array('id' => 5));
你尝试过这样做吗?我很确定它应该有用。

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

答案 5 :(得分:0)

这是一个古老的问题,但是我会回答,因为8年后我不得不研究相同的问题。

我检查了parseInt的源代码,它基本上只会删除1行。它通过将1 col匹配到1 val,然后与AND联接来工作。因此,如果您执行$wpdb->delete(),它将以(id == 4 AND id == 5)作为行读取。没有任何行符合该条件。

所以要删除多行,唯一的方法(据我所知)是使用自定义查询:

array("id"=>4,"id"=>5)