gpt4 book ai didi

php - CI affected_rows 即使在更新后也总是返回 0

转载 作者:可可西里 更新时间:2023-10-31 23:45:50 26 4
gpt4 key购买 nike

我使用 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, $id);
$this->db->update($this->table,$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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com