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内の値にバインドされているため、次のようにするとうまくいくはずです(そしてサニタイズする必要があります):conditionattributes

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 に答える