代码似乎无效。
// $counter is an instance of Zend_Db_Table_Abstract
$counter->update(array('hits' => 'hits+1'), '"id" = 1');
我查看了数据库分析器并找到以下查询:
UPDATE `downloads` SET `hits` = ? WHERE ("id" = 1)
答案 0 :(得分:4)
您需要使用Zend_Db_Expr
(SQL表达式)的实例才能使其正常工作(未经测试):
$counter->update(array('hits' => new Zend_Db_Expr( 'hits+1' ) ), 'id = 1');
......或类似的东西,我相信应该有用。如果它不起作用则报告,我会得到一个经过测试的答案。
<强>更新强>
好吧,我测试了它,并且它可以工作,前提是你在where子句中放宽id
周围的引号。不应将id
解释为文字字符串,而应将其解释为列名。也许你准备使用反引号?就像这样'`id` = 1'。这是引用MySQL标识符的正确方法。