0

次のような特定の基準に基づいて、テーブルの1つで検索を実行しようとしています:

$id = 1;
$criteria = new CDbCriteria();
$criteria->addCondition("usr_currency=:currency");
$currencies = User::model()->findAll($criteria, array(':currency' => $id,));        

私は得るCDbException

CDbCommand failed to execute the SQL statement: 
SQLSTATE[HY093]: Invalid parameter number: no parameters were bound. 
The SQL statement executed was: 
    SELECT * FROM `user` `t` 
    WHERE usr_currency=:currency

どこで、これは機能します:

$id = 1;
$criteria = new CDbCriteria();
$criteria->addCondition("usr_currency=:currency");
$criteria->params = array(':currency' => $id,);
$comments = User::model()->findAll($criteria);      

最初のコード フラグメントの何が問題になっていますか?

4

1 に答える 1

0

CActiveRecord::find()から

これは、最初のパラメーターが文字列 (クエリ条件) の場合にのみ使用されます。それ以外の場合は、CDbCriteria::params を使用してパラメータを設定してください。

于 2013-10-26T09:13:44.450 に答える