2

代码似乎不起作用。

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

我查看了 DB Profiler 并找到以下查询:

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

1 回答 1

4

您需要使用Zend_Db_Expr(SQL 表达式)的实例来使其工作(未经测试):

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

...或类似的东西我认为应该有效。如果它不起作用,请报告,我会提出一个经过测试的答案。

更新:
好的,我对其进行了测试,并且它可以工作,前提是您松开 where 子句中的引号idid不应将其解释为文字字符串,而应解释为列名。也许您建议改用反引号?像这样'`id` = 1'。这是引用 MySQL 标识符的正确方法。

于 2010-03-13T19:08:01.410 回答