首页 > 解决方案 > 如何将此codeigniter查询转换为选择更新

问题描述

丢失更新是一个常见的 MySQL 问题,为了解决这个问题,应该将选择查询编辑为像这样的更新查询的选择

select * from users where id = 1 FOR UPDATE

以防止其他用户同时在同一行上工作。我想在codeigniter中通过将此查询编辑为更新查询的选择来执行此操作

public function get_row_data($id)
{

    $this->db->where('id',$id);

    $result = $this->db->get('users');

    if($result && $result->num_rows() > 0)
    {
        return $result->row();
    }
    else
    {
        return false;
    }
}

我可以使用上面的简单查询,但如果模型查询可以转换,我更喜欢。

谢谢

标签: phpmysqlcodeigniterselect

解决方案


似乎您想在 Mysql 中获取行级别锁定,并且 codeigniter 查询生成器不允许操纵其方法来生成自定义 sql 查询

$this->db->trans_begin();
$this->db->query('you query goes here');
// other task .....
if ($this->db->trans_status() === FALSE) {
    $this->db->trans_rollback();
} else {
    $this->db->trans_commit();
}

推荐阅读