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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |