2

CodeIgniter のデータベース クラスを使用して列の値を減らそうとしています。現時点では、私はこれをやっています:

public function deduct_limit($bytes, $ip_address) {
    $this->db->where('ip_address', $ip_address);
    $this->db->set('limit', 'limit - ' . $bytes, FALSE);
    $this->db->update('limits');
}

ただし、CodeIgniter は次のエラー メッセージをスローします。

SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の「limit - 418266480 WHERE ip_address= '127.0.0.1」付近で使用する正しい構文を確認してください。

UPDATE `limits` 
    SET `limit` = limit - 418266480 
WHERE `ip_address` = '127.0.0.1'

SQLが正しいことを知っている限り、Googleで検索してSOを調べたところ、すべてその構文に従っています。または以外では使用できません+1-1?

4

1 に答える 1

2

バッククォートのようにMySQLの予約語をエスケープする必要がありますlimit

UPDATE limits
SET `limit` = `limit` - 418266480
WHERE ip_address = '127.0.0.1'
于 2013-07-31T21:00:14.953 に答える