如何知道mysql中删除的行数?

时间:2012-05-25 11:15:36

标签: php mysql codeigniter activerecord

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

5 个答案:

答案 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网站有一个黑客可以返回正确的行数,默认情况下会启用。

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

答案 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(*)并比较两个结果。