如果$this->db->affected_rows()
每次都返回,如何知道codeigniter中已删除行的数量。成功或失败也
答案 0 :(得分:3)
$this->db->where($conditions)->delete('mytable');
return $this->db->affected_rows();
答案 1 :(得分:3)
如果知道$ this-> db-> affected_rows()每次都返回,那么如何知道codeigniter中已删除的行的数量。成功或失败也
我不使用CodeIgniter,但通常affected_rows( )
应该返回受影响的行数。这意味着,如果查询成功,它应该始终是一个整数。如果返回0,则不删除任何行,如果> 0,该号码被删除。
答案 2 :(得分:1)
你是否经过测试,根据codeigniters网站有一个黑客可以返回正确的行数,默认情况下会启用。
答案 3 :(得分:1)
根据Codeigniter userguide,它返回正确的行数:
“注意:在MySQL中”DELETE FROM TABLE“返回0个受影响的行 数据库类有一个小的hack,允许它返回正确的 受影响的行数。默认情况下,此hack已启用但可以 在数据库驱动程序文件中关闭。“
所以这应该有效:
$this->db->delete('1', 'your_table');
echo ($this->db->affected_rows()." rows were deleted");
如果它不起作用,那么只需将其作为非理想的解决方法
$count = $this->db->count_all('your_table');
$this->db->delete('1', 'your_table');
$new_count = $this->db->count_all('your_table');
if ($new_count > $count)
{
echo (($new_count-$count)." rows was deleted");
}
else
{
echo "nothing deleted";
}
答案 4 :(得分:0)
如果您更具体,那将有所帮助,例如...... 但是你可以在删除之前和之后执行SELECT COUNT(*)并比较两个结果。