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。那么,我做错了什么?必须有办法做到这一点,我只是看不出我还能做错什么。