使用数组删除Mysql记录

时间:2012-03-07 20:10:02

标签: mysql codeigniter

我正在尝试使用codeigniter

删除多个记录
$this->db->delete() and $this->db->where()

我想删除像

这样的数组的记录
$id =array(
  0=>'13',   //13 is the id
  1=>'4',    //4 is the id
  2=>'2'     //2 is the id
); 

数组由用户生成,因此它将是动态的。 我只想知道codeigniter是否可以将数组作为delete方法中的一个选项。

根据这个。 http://codeigniter.com/user_guide/database/active_record.html

数组在以下方法中不起作用。

$this->db->delete()
$this->db->where('id', $id); //I don't think I can do this. 

我可以使用foreach循环,但在我看来有更好的方法。我想知道是否有人可以帮助我。非常感谢。

3 个答案:

答案 0 :(得分:3)

不熟悉codeigniters活跃记录,但我相信你想要的是:

$sql = "DELETE FROM tbl WHERE id IN (".implode(',',$idsToDelete.");";
$this->db->query($sql);

对于有效记录,这可能会更好:

$this->db->where('IN ('.implode(',',$idsToDelete).')', NULL, FALSE);
$this->db->delete();

答案 1 :(得分:1)

真正接受数组作为参数的方法吗?

我认为您的源代码应该是:

$this->db->delete()
$this->db->where($id['i_index']); 

答案 2 :(得分:0)

此文章已过时,但我认为仍然应该得到最佳/正确答案:

    $this->where_in('id', array(13, 4, 2))->delete('db_table_name');