このSQLクエリ
$wpdb->query("UPDATE log SET total=total+1 WHERE id='1')");
どうやって$ wpdb-> update()文にするの?
例.
$wpdb->update('log', array('total'=>'total+1'), array('id'=>'1'));
あなたは違います。 WPDBのupdate()関数とは異なります。更新機能は、列の値がストリングであると想定します。 formatパラメータを使用してこれをオーバーライドできますが、%d、%f、および%s(integer、float、string)しか使用できません。 total + 1のような列に対する操作はできません。
更新するにはquery()関数を直接使用しなければなりません。
クエリメソッドを使用すると、サニタイズの問題が発生する可能性があります。更新方法を使用すると、競合状態になる危険があります。両方を克服するには、更新の直前に、最後の句 "FOR UPDATE"を使用して行にselectを発行します。結果を取得するために、updateおよびget_rowメソッドに使用するのと同じ条件を使用できます。
唯一の注意点は、あなたの条件が複数の行に当たった場合ですが、wpdbのqueryメソッドを使う以外の方法はありません。