CodeIgniter UPDATE和LIMIT

时间:2016-11-23 03:07:24

标签: codeigniter

我知道此问题已在Update with limit 1 in codeigniter use active record

之前发布

但似乎使用Active Record组合UPDATE和LIMIT并不适合我。它仍将基于WHERE子句更新所有记录。我目前正在使用CodeIgniter 3.0.6。这是CodeIgniter的错误吗?

screenshot of the query

2 个答案:

答案 0 :(得分:1)

您不能在更新查询中直接添加限制。我有另一种方法。首先,您需要在哪里查询一行,然后使用获取行唯一键(例如唯一的自动增量ID)来运行更新查询。

$singleInfo = $this->db->get_where($tbl, array('user_id'=>1));
$this->db->update($tbl,array('username'=>'FredSmith'),array('user_id'=>$singleInfo->id));

答案 1 :(得分:0)

我启动了CI 3.0.6并将其用作演示,因为我们无法看到您的设置。

public function db_update_test_with_limit(){
    $tbl = 'users';

    // Use Chaining - Works
    $this->db
        ->where('user_id',1)
        ->limit(1)
        ->update($tbl,array('username'=>'FredSmith'));
    echo $this->db->last_query();

    // Use discrete calls -  Works
    $this->db->where('user_id',1);
    $this->db->limit(1);
    $this->db->update($tbl,array('username'=>'FredSmith'));
    echo '<br>';
    echo $this->db->last_query();
}

两者的结果都是......

UPDATE `users` SET `username` = 'FredSmith' WHERE `user_id` = 1 LIMIT 1
UPDATE `users` SET `username` = 'FredSmith' WHERE `user_id` = 1 LIMIT 1

因此,如果你正在做同样的事情并得到不同的结果,那么就会发生一些时髦的事情。

如果您使用它作为测试并按摩它以适合您的情况,它是否有效?