2

コードが機能していないようです。

// $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

1 に答える 1

4

これを機能させるには (SQL 式)のインスタンスを使用する必要がありますZend_Db_Expr(未テスト):

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

...または同様のものが機能すると思います。うまくいかない場合は報告してください。テスト済みの回答を提供します。

更新:
わかりました、私はそれをテストしidましたが、where句で引用符を緩めれば機能します。idリテラル文字列としてではなく、列名として解釈する必要があります。代わりにバッククォートを使用することをお勧めしますか? '`id` = 1' のように。これは、MySQL の識別子を引用する適切な方法です。

于 2010-03-13T19:08:01.410 に答える