代码似乎不起作用。
// $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)
代码似乎不起作用。
// $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)
您需要使用Zend_Db_Expr
(SQL 表达式)的实例来使其工作(未经测试):
$counter->update(array('hits' => new Zend_Db_Expr( 'hits+1' ) ), 'id = 1');
...或类似的东西我认为应该有效。如果它不起作用,请报告,我会提出一个经过测试的答案。
更新:
好的,我对其进行了测试,并且它可以工作,前提是您松开 where 子句中的引号id
。id
不应将其解释为文字字符串,而应解释为列名。也许您建议改用反引号?像这样'`id` = 1'。这是引用 MySQL 标识符的正确方法。