如何检查一行是否受codeigniter活动记录的影响

如何检查一行是否受codeigniter活动记录的影响,codeigniter,Codeigniter,我在网上搜索,但没有找到任何解决办法, 我的问题是,我现在如何在更新期间确定行值是否已更改 或者如果一行受到影响?使用受影响的行() 执行“写入”类型查询(插入、更新等)时,显示受影响的行数 当我们使用CodeIgniter时,只有当输入字段的值发生一些变化时,数据才会更新,然后$this->db->impacted_rows()将返回大于0的值 假设我们有两个字段,“name”和“email”。如果我们尝试在不更改任何字段的情况下提交表单,则$this->db->infected_rows()

我在网上搜索,但没有找到任何解决办法, 我的问题是,我现在如何在更新期间确定行值是否已更改 或者如果一行受到影响?

使用
受影响的行()

执行“写入”类型查询(插入、更新等)时,显示受影响的行数


当我们使用CodeIgniter时,只有当输入字段的值发生一些变化时,数据才会更新,然后
$this->db->impacted_rows()
将返回大于0的值

假设我们有两个字段,“name”和“email”。如果我们尝试在不更改任何字段的情况下提交表单,则
$this->db->infected_rows()
将返回0,否则将返回1

更好的方法是使用:

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

我认为这是实现这一目标最简单的方法

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

使用以下命令:$this->db->infected_rows();这是真的,很可能是真的。正如旁注:
受影响的行()
不属于CI活动记录,它是CI SQL驱动程序的一部分。如果某些内容发生了更改,受影响的行的信息只会返回1,这一点非常重要。我刚才遇到了一个“upsert”函数的问题,该函数希望受影响的_行在update语句之后为1(如果该行存在)。与我的预期相反,如果行存在,但更新尝试将其设置为与之前相同的值,那么受影响的_行将返回0。
return ($this->db->affected_rows() != 1) ? false : true;