3

$this->db->affected_rows()如果每次都返回,即如何知道codeigniter中已删除行的数量。成功或失败也

4

5 回答 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网站有一个返回正确数量的行的黑客,默认情况下是打开的。

http://codeigniter.com/user_guide/database/helpers.html

于 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 回答