3

我正在使用以下代码:

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)
4

1 回答 1

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,
));
于 2013-01-10T09:56:19.627 回答