これは、値 ( ) を追加しpoints
て特定のテーブル ( ) 内の特定の列 ( ) を更新する CodeIgniter の例です。users
$points
function give_points($username,$points)
{
$this->db->set('points', 'points + $points');
$this->db->where('username', $username);
$this->db->update('users');
}
ここで、列とテーブルがパラメーターとして渡されるように変更したいと思います。これは、特定のテーブルと列の組み合わせで動作するようにすることを目的としています。しかし、私はいくつかの問題を抱えています。これは私が書いた最初のバージョンです:
//update column ($col) of table ($tbl) by adding value ($val)
function update_col($id,$col,$tbl,$val){
$this->db->set($col, $col + $val);
$this->db->where('id', $id);
$this->db->update($tbl);
}
私のテーブルは ですusers
。この場合に更新したい列はtokens
(INT) で、値を 25 減らしたいです。現在の値tokens
は 40 です。
このメソッドを次のように呼び出すと:
update_col($user_id,"tokens","users",-25);
新しい値を 40-25=15 として設定する代わりに、値を 40 から -25 に変更するだけです。したがって、数値を減算する代わりに、それを新しい値として設定するだけです。
次に、メソッドを適応させてみました:
function update_col($id,$col,$tbl,$val){
$this->db->set($col, $col.' + $val');
$this->db->where('id', $id);
$this->db->update($tbl);
}
これで、値が 0 に更新されました。
単一引用符の代わりに二重引用符で同じことを試みると、値も 0 に設定されます。これを行う方法があるに違いありません。他に何が間違っていたのかわかりません。