Yii 参数化DeleteAllByAttributes不';我不能在伊工作

Yii 参数化DeleteAllByAttributes不';我不能在伊工作,yii,Yii,我正在使用以下代码: 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

我正在使用以下代码:

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)

我相信您不需要绑定
attributes
数组中的属性(就像
findAllByAttributes()
中一样)。
参数
数组中的值绑定到
条件
字符串中的值,而不是
属性
数组中的值,因此我认为以下内容应该适用于您(并经过清理):

或者,您可以使用:

MyClass::model()->deleteAllByAttributes(array(),'`phone_number` = :phone_number',array(
    ':phone_number'=>$phoneNumber,
));
这会产生同样的效果。。。但是,您也可以使用
deleteAll()


因此,无需事先清理
$phoneNumber
。(除了在这种情况下检查它是否是有效的电话号码)是的,从我所看到的
$attributes
数组中的值被放入
CDbCommandBuilder::createColumnCriteria()
属性中,该属性作为
deleteAllByAttributes()
的一部分运行,因此无需进行sanatize
MyClass::model()->deleteAllByAttributes(array(),'`phone_number` = :phone_number',array(
    ':phone_number'=>$phoneNumber,
));
MyClass::model()->deleteAll('`phone_number` = :phone_number',array(
    ':phone_number'=>$phoneNumber,
));