我使用以下代码:
MyClass::model()->deleteAllByAttributes(array('phone_number'=>':phone_number'), '', array(':phone_number'=>$phoneNumber));
我收到以下错误:
CDbException
SQLSTATE[HY093]: Invalid parameter number: number of bound variables
does not match number of tokens. The SQL statement executed was:
DELETE FROM `my_class` WHERE `my_class`.`phone_number`=:yp0
(E:\xampp\htdocs\yii\db\CDbCommand.php:354)
答案 0 :(得分:14)
我相信你不需要绑定attributes
数组中的属性(如同findAllByAttributes()
中那样)。 params
数组中的值绑定到condition
字符串中的值,而不是attributes
数组中的值,因此我相信以下内容适合您(并进行清理):
MyClass::model()->deleteAllByAttributes(array(
'phone_number'=>$phoneNumber,
));
或者,您可以使用:
MyClass::model()->deleteAllByAttributes(array(),'`phone_number` = :phone_number',array(
':phone_number'=>$phoneNumber,
));
哪个会有同样的效果......但是你可以使用deleteAll()
:
MyClass::model()->deleteAll('`phone_number` = :phone_number',array(
':phone_number'=>$phoneNumber,
));