首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用codeigniter活动记录语法的mysql数据库的增量字段

使用codeigniter活动记录语法的mysql数据库的增量字段
EN

Stack Overflow用户
提问于 2011-06-16 22:28:21
回答 3查看 41.8K关注 0票数 62

我有以下php-codeigniter脚本,它试图使用active-record语法递增记录的字段:

代码语言:javascript
复制
$data = array('votes' => '(votes + 1)');
$this->db->where('id', $post['identifier']);
$this->db->update('users', $data);

这将生成以下SQL:

"UPDATEusersSETvotes= '(votes + 1)' WHEREid= '44'

它没有运行,但是这个SQL确实做了我想要的:"UPDATEusersSETvotes= (votes + 1) WHEREid= '44'"` <--注意前后没有引号(votes + 1)

有人知道如何使用codeigniter的活动记录语法来实现这种类型的查询吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-23 06:26:07

您可以按如下所示进行操作:

代码语言:javascript
复制
$this->db->where('id', $post['identifier']);
$this->db->set('votes', 'votes+1', FALSE);
$this->db->update('users');

这样做的原因是因为第三个(可选) FALSE参数告诉CodeIgniter不要用反引号(')保护生成的查询。这意味着生成的SQL将是:

UPDATE users SET votes= votes + 1 WHERE id= '44'

如果您注意到,将从'(votes+1)'中删除反标记,这将产生将votes属性递增1的预期效果。

票数 121
EN

Stack Overflow用户

发布于 2013-07-19 11:56:24

代码语言:javascript
复制
$data = array('votes' => 'votes + 1');

foreach ($data as $key=>$val) {
    $this->db->set($key, $val, FALSE);
}

$this->db->where('id', $post['identifier']);
$this->db->update('users', $data);
票数 4
EN

Stack Overflow用户

发布于 2019-07-24 15:36:16

您可以按如下所示进行操作:

代码语言:javascript
复制
    public function increment_product_count(){
        $product_id=$this->input->post('product_id');
        $this->db->where('id', $product_id);
        $this->db->set('click_count', 'click_count+1', FALSE);
        $this->db->update('tbl_product');
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6373564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档