2013-07-17 82 views
1

我通过网络搜索,但我没有找到任何解决方案, 我的问题是,我现在如何在更新过程中如果行值已更改或不是 或者如果一行受到影响?如何检查一行是否受codeigniter活动记录影响

+1

使用此:$ this-> db-> affected_rows(); – senthilbp

+0

这是真的,可能是[答案](http://stackoverflow.com/questions/10766031/mysql-database-update-and-codeigniter-rows-affected-function?rq=1)。正如旁注:'affected_rows()'不属于CI活动记录,它是CI SQL驱动程序的一部分。 –

回答

3

使用affected_rows();

$this->db->affected_rows() 

显示做 “写” 类型的查询(INSERT,UPDATE,等)时,受影响的行数。

3

当我们使用CodeIgniter工作,当出现输入字段的值一些变化,然后$this->db->affected_rows()将返回一个值大于0

,我们有两个字段中的数据只更新, '名称'和'电子邮件'。如果我们试图提交表单不改变任何领域,那么$this->db->affected_rows()将返回0,否则将返回1

一个更好的办法是使用:

if ($this->db->affected_rows() >= 0) { 
    return true; // your code 
} else { 
    return false: // your code 
} 
+0

如果事情发生了变化,那些affected_rows信息将只返回1,这一点非常重要。我刚刚遇到了一个“upsert”函数的问题,如果该行存在,那么期望affected_rows在update语句之后为1。与我的预期相反,如果行存在,但更新尝试将它设置为与之前相同的值,那么affected_rows将返回0。 – webtopf

0

我觉得这是最简单的实现这一目标的途径。

return ($this->db->affected_rows() != 1) ? false : true;