所以我可以使用以下方法删除一行:
$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)));
......但它们都不起作用。我觉得这应该很容易。有什么答案吗?
答案 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)