2

私はYii1.1とPHP5を使ったアジャイルWebアプリケーション開発をフォローしており、「TrackStar」プロジェクトに取り組んでいます。私の一生の間、私は自分の問題がどこにあるのか理解できません。例外が発生します:

CDbCommandはSQLステートメントの実行に失敗しました:SQLSTATE [HY093]:無効なパラメーター番号:パラメーターが定義されていません。実行されたSQLステートメントは次のtbl_issue tとおりです。SELECTCOUNT(*)FROM WHERE project_id =:projectId

(このnoobの解釈では)私のCActiveDataProviderのパラメーターは、ビューのように基準で解決されていないように見えます。

(in /protected/controllers/ProjectController.php)

55         public function actionView()
56         {
57             $issueDataProvider = new CActiveDataProvider('Issue', array(
58                 'criteria' => array(
59                     'condition' => 'project_id=:projectId',
60                     'params' => array(':projectId=' => $this->loadModel()->id),
61                 ),
62                 'pagination' => array( 
63                     'pageSize' => 1,
64                 ),      
65             )); 
66             $this->render('view',array(
67                     'model'=>$this->loadModel(),
68                     'issueDataProvider' => $issueDataProvider,
69             ));
70         }

コードをgithubリポジトリと照合しましたが、どこにも違いは見つかりませんでした。すべてのコードを投稿することなく(そして誰かに実際にコードを調べてもらうことなく)、ここで見逃している簡単なものはありますか?

4

1 に答える 1

3

基準のパラメータにエラーがあるようです。(=:projectIdの後)。正しい声明は

   'params' => array(':projectId' => $this->loadModel()->id),

Params配列は、パラメータープレースホルダーによってインデックス付けされたクエリパラメーター値のリストです。たとえば、array(':name' =>'Dan'、':age' => '31')。

于 2012-05-05T04:37:04.977 に答える