繁体   English   中英

在codeigniter中查询“select for update”

[英]query “select for update” in codeigniter

我有查询= SELECT @condi:=id FROM table WHERE id>1 LIMIT 1 for UPDATE; UPDATE table set aa="ok" WHERE id=@condi SELECT @condi:=id FROM table WHERE id>1 LIMIT 1 for UPDATE; UPDATE table set aa="ok" WHERE id=@condi

我使用了$this->db->query(query)但是codeigniter info错误“你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在'update table set aa =附近使用正确的语法“ok”,其中id = @ condi'在第1行“Miss”;“ 我使用phpmyadmin执行此查询,它的结果行正确而不是错误查询

也许核心codeigniter错误你能帮我在codeigniter中执行我的查询,谢谢

您可以尝试使用查询构建器来防止SQL错误:

$query = $this->db->select()
            ->from('table')
            ->where('id >', 1)
            ->limit(1)
            ->get_compiled_select();
$data = $this->db->query("{$query} FOR UPDATE")->row_array();

$this->db->where('id', $condi)->update('table', ['aa'=>'ok']);

因为Codeigniter 3构建器不支持FOR UPDATE ,所以我只使用编译器来重建查询。

Codeigniter get_compiled_select()

yidas / codeigniter-model - 悲观锁定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM