2015-09-23 17 views
2

我想與CDbCommand運行SQL腳本:CDbCommand:減少列的值本身

update user set point = point - 2 where user_id = 13 and role_id = 2; 

而且我的代碼使用Yii CDbCommand:

Yii::app()->db->createCommand()->update(
    'user', 
    array('point'=>'point + 2'), 
    array('user_id' => 13, 'role_id'=>':role'), 
    array('role'=>2) 
); 

然後我得到的錯誤:

CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens. The SQL statement executed was: UPDATE `user` SET `point`=:point 

問題是什麼?

回答

3

這樣做:

$update = Yii::app()->db->createCommand() 
    ->update('user', 
     array(
      'point'=>new CDbExpression('point + 2') 
     ), 
     'id=:id AND role_id =:role_id', 
     array(':id'=> 13, ':role_id' => 2) 
    ); 
+0

太棒了!這是有趣的。 Tkz爲您的答案! –