php – CI affected_rows总是在更新后返回0

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – CI affected_rows总是在更新后返回0脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用CodeignITer 3.0.6来构建一个系统.
通常,我使用affected_rows()来检查我的数据库是否已更新.

function update($id=0,$data=array())
    {
        $this->db->where($this->key,$id);
        $this->db->update($this->table,$data);
        if($this->db->affected_rows() > 0)return TRUE;
        else return FALSE;
    }

问题是如果没有找到更新,它也将返回0.由于我想在我的代码中区分更新和无更新,所以我使用此解决方案.

function update($id=0,$data=array())
    {
        $this->db->trans_start();
        $this->db->where($this->key,$data);
        $this->db->trans_complete();
        if ($this->db->affected_rows() > 0) {
            return TRUE;
        } else {
            if ($this->db->trans_status() == FALSE) {
                return FALSE;
            }
            return 'No Update';
        }
    }

但即使更新后的affected_rows总是返回int(0).
什么原因?谢谢.

解决方法

我也使用CI 3.0.6,affected_rows()返回正确数量的更新行.

你可以在没有交易的情况下进行测试.像这样的东西?

function update($id)
{
    $this->db->set('field_name',"new_value");
    $this->db->where('id',$id);
    $this->db->update('table_name');

    $rows = $this->db->affected_rows();

    return $rows;
}

验证数据库中是否实际更新了记录.您可以检查$rows以获取更新状态.

if ($rows < 1) {
    // no update
} else {
    // updated
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – CI affected_rows总是在更新后返回0全部内容,希望文章能够帮你解决php – CI affected_rows总是在更新后返回0所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。