0

我的表中有一个名为计数器的列,称为文章

问题是如何将这个列中的值增加 1 左右,所以在控制器或模型中我将使用 update db 函数。

例如,我正在考虑这样的事情:

 $id = 5; //article id (I will get that from the url or db, no problem with that)
 $this->db->update("current counter column value plus one where id column equals $id "); 

让我们假设我得到了文章# of views:

$this->db->select_sum("counter")->get("articles");

我知道我需要验证用户的 ip,所以例如我不是每次页面加载都计算它,而是仅在 5 分钟后计算。不过那是另一回事了 ;)。我只是需要完成这个问题。

4

1 回答 1

2

您可以使用常规查询(带有绑定):

$sql = "UPDATE articles SET counter = counter + 1 WHERE id = ?";
$this->db->query($sql, array($id));

或者,使用 AR:

$query = $this->db->update('articles')
                   ->set('counter','counter+1', FALSE)
                   ->where('id', $id);

作为第三个参数的 FALSEset()告诉它不要转义列名。
如果只需要增加,则不需要获取视图数。

于 2012-12-18T18:41:53.593 回答