以下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'");
答案 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'");
}