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,
));