2011-11-04 92 views
0

以下兩行通過從comment_total減去-1來刪除評論後更新數據庫。我得到一個錯誤,如果comment_total碰巧是0,因爲我們不能從-1減去-1。我如何修改它,所以它只在comment_total大於0時減去-1,否則將其設置爲0.PHP從數據庫中減去1條件式

$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'"); 
+1

你可以在年底'和comment_total> 0'添加第二where子句這樣在數據庫方面做完全? – user482594

+0

順便說一句,你可以從0減去-1,也許你的想法除以0? – Ben

+0

@ben,這就是我的想法。但是,當從0中減去-1時會出現錯誤。'致命錯誤:不支持的操作數類型'。 – Pinkie

回答

2

您可以使用單個查詢

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

這是完美的。有用。謝謝。 – Pinkie

2

試試這個。我加了max功能:

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'"); 

文檔可以在這裏找到: http://www.php.net/manual/en/function.max.php

+0

我仍然收到同樣的錯誤。 '致命錯誤:不支持的操作數類型'。如果我手動將'$ query-> row('comment_total') - 1'替換爲0,那麼它就可以工作。 – Pinkie

+0

啊,那個錯誤不是關於你的查詢,而是你的php代碼。 '$ query-> row('comment_total')'返回什麼? – Ben

+0

Phil的解決方案有效。謝謝。 +1的最大功能。 – Pinkie

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'"); 
} 
+0

由於'$ query-> row'的處理方式,這不起作用 – Pinkie

+0

噢,好吧,無賴。我給了它大學的嘗試! –