$this->db->affected_rows()
如果每次都返回,即如何知道codeigniter中已删除行的数量。成功或失败也
问问题
11516 次
5 回答
4
$this->db->where($conditions)->delete('mytable');
return $this->db->affected_rows();
于 2012-05-25T11:19:35.540 回答
3
如果 $this->db->affected_rows() 每次都返回,如何知道 codeigniter 中删除的行数。成功或失败也
我不使用 CodeIgniter,但通常affected_rows( )
应该返回受影响的行数。这意味着,如果查询成功,它应该始终是一个整数。如果返回 0,则不删除任何行,如果 > 0,则删除该数字。
于 2012-05-25T11:19:36.353 回答
1
你有没有测试过,根据codeigniters网站有一个返回正确数量的行的黑客,默认情况下是打开的。
于 2012-05-25T11:18:23.520 回答
1
根据Codeigniter用户指南,它返回正确的行数:
“注意:在 MySQL 中,“DELETE FROM TABLE”返回 0 个受影响的行。数据库类有一个小技巧,允许它返回正确数量的受影响的行。默认情况下,此 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";
}
于 2012-05-25T11:22:30.867 回答
0
如果您更具体,例如...但是您可以在删除之前和之后执行 SELECT COUNT(*) 并比较两个结果。
于 2012-05-25T11:20:42.593 回答