コードが機能していないようです。
// $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)
コードが機能していないようです。
// $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)
これを機能させるには (SQL 式)のインスタンスを使用する必要がありますZend_Db_Expr
(未テスト):
$counter->update(array('hits' => new Zend_Db_Expr( 'hits+1' ) ), 'id = 1');
...または同様のものが機能すると思います。うまくいかない場合は報告してください。テスト済みの回答を提供します。
更新:
わかりました、私はそれをテストしid
ましたが、where句で引用符を緩めれば機能します。id
リテラル文字列としてではなく、列名として解釈する必要があります。代わりにバッククォートを使用することをお勧めしますか? '`id` = 1' のように。これは、MySQL の識別子を引用する適切な方法です。