2013-07-31 123 views
2

我試圖使用CodeIgniter的數據庫類來減少列的值。目前,我這樣做:使用SET降低列值

public function deduct_limit($bytes, $ip_address) { 
    $this->db->where('ip_address', $ip_address); 
    $this->db->set('limit', 'limit - ' . $bytes, FALSE); 
    $this->db->update('limits'); 
} 

然而,笨拋出了此錯誤消息:

您的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用 接近「極限 - 418266480 WHERE ip_address =‘手動在行127.0.0.1’」 1

UPDATE `limits` 
    SET `limit` = limit - 418266480 
WHERE `ip_address` = '127.0.0.1' 

據我知道, SQL是正確的,我已經谷歌了,看着它們,他們都遵循這種語法。除了+1-1之外,我不能使用這個嗎?

+0

'limit'是MySQL中的保留字,你需要使用反引號或更好的重命名列如果可能的話,以最佳做法,以防止在將來這樣的錯誤 – amaster

回答

2

你需要逃避reserved words in MySQLlimit與反引號

UPDATE limits 
SET `limit` = `limit` - 418266480 
WHERE ip_address = '127.0.0.1' 
+0

唉,我已經被保留字絆倒的次數...謝謝! – user1788996

+1

@ user1788996如果它解決了您的問題,請點擊小「複選標記」以接受答案*。 http://stackoverflow.com/help/someone-answers –

2

這可能會幫助你

$this->db->set('limit', 'limit - ' . (int) $bytes, FALSE);