2010-03-13 30 views
2

該代碼似乎無法正常工作。Zend_Db_Table - 更新不起作用

// $counter is an instance of Zend_Db_Table_Abstract 
$counter->update(array('hits' => 'hits+1'), '"id" = 1'); 

我接過來一看進入DB探查,找到以下查詢:

UPDATE `downloads` SET `hits` = ? WHERE ("id" = 1) 

回答

4

您需要使用的Zend_Db_Expr(SQL表達式)一個實例來得到這個工作(未經測試):

$counter->update(array('hits' => new Zend_Db_Expr('hits+1')), 'id = 1'); 

...或類似的東西,我相信應該工作。回報如果它不起作用,我會提出一個經過測試的答案。

UPDATE:
好吧,我測試了它,和它的作品,只要你在where子句中失去周圍id引號。不應該將id解釋爲文字字符串,而應將其解釋爲列名稱。也許你會反而使用反引號?像'`id` = 1'一樣。這是引用MySQL標識符的正確方法。