加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:26:25 所属栏目:PHP教程 来源:网络整理
导读:我使用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 TRU
我使用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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读