PHP从数据库中减去1条件

时间:2011-11-04 04:58:11

标签: php mysql

以下2行通过从comment_total减去-1来删除注释后更新数据库。如果comment_total碰巧为0,我会收到错误,因为我们无法从0减去-1。我如何修改它,这样只有当comment_total大于0时才减去-1,否则将其设为0。

$query = $this->EE->db->query("SELECT comment_total FROM exp_channel_titles WHERE entry_id = '$entry_id'");
$this->EE->db->query("UPDATE exp_channel_titles set comment_total = '".($query->row('comment_total') - 1)."' WHERE entry_id = '$entry_id'");

3 个答案:

答案 0 :(得分:2)

试试这个。我添加了max函数:

$query = $this->EE->db->query("SELECT comment_total FROM exp_channel_titles WHERE entry_id = '$entry_id'");
$this->EE->db->query("UPDATE exp_channel_titles set comment_total = '".max(0,$query->row('comment_total') - 1)."' WHERE entry_id = '$entry_id'");

max的文档可在此处找到: http://www.php.net/manual/en/function.max.php

答案 1 :(得分:2)

您可以使用单个查询完全在数据库端执行此操作

UPDATE exp_channel_titles SET comment_total = GREATEST(comment_total - 1, 0)
WHERE entry_id = ?

答案 2 :(得分:0)

尝试删除与设置comment_total的值相关的刻度(引号)。

if ($query->row('comment_total') > 0) {
    $this->EE->db->query("UPDATE exp_channel_titles set comment_total = ".($query->row('comment_total') - 1)." WHERE entry_id = '$entry_id'");
}