YII PHP通知未定义索引:title

YII PHP通知未定义索引:title,php,yii,Php,Yii,我是YII的新手,我在站点加载时出错 PHP notice Undefined index: title PATH\TO\WEBSITE\protected\controllers\SiteController.php(35) 下面是代码 /** 25 * This is the default 'index' action that is invoked 26 * when an action is not explicitly requested by users. 2

我是YII的新手,我在站点加载时出错

PHP notice
Undefined index: title
PATH\TO\WEBSITE\protected\controllers\SiteController.php(35)
下面是代码

/**
25      * This is the default 'index' action that is invoked
26      * when an action is not explicitly requested by users.
27      */
28     public function actionIndex()
29     {
30         // renders the view file 'protected/views/site/index.php'
31         // using the default layout 'protected/views/layouts/main.php'
32         $criteria = new CDbCriteria;
33 
34         $criteria->condition = "title LIKE :title";
35         $criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';
36 
37         $criteria->addCondition("category_id LIKE :category_id");
38         if( !is_null($_GET['category_id'] ) && ( $_GET['category_id'] != "" ) ) {
39             $criteria->params[':category_id'] = (int)$_GET['category_id'];
40         } else {
41             $criteria->params[':category_id'] = '%';
42         }
43         
44         if( $_GET['hightRate'] == 1 ) {
45             $criteria->addCondition("user_id IN (SELECT id FROM `yb_user` WHERE rating >= 8)");
46         }

如何修复此错误并在localhost中运行我的网站?

首先定义阵列:

$criteria->params = array();
然后你可以添加到它

$criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';
更新:

这也可能是因为php中的错误报告级别,请尝试将其更改为

if(isset( $_GET['title'] )) // check if title is available before using it
    $criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';

如果这是导致错误的第35行:

$criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';
我相信这里唯一能让
$\u获得['title']
的选项

您不应该依靠
$\u以这种信心获取
数据。请尝试按如下方式重写此代码:

if(isset($_GET['title'])){
        $criteria->condition = "title LIKE :title";
        $criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';
}

N.B.您不应该在控制器中执行这种繁重的操作。在模型上执行db操作。

谢谢@tinybyte,实际上网站在线运行良好,但当我尝试在本地设置时,在本地创建了db,并更改了数据库设置的config/main.php,测试网站没有在本地运行。它运行的是live OK,但不是locallyalso,正如您所说,我用空数组定义了param,它仍然不工作。得到同样的错误你是对的Jocelyn,我把错误报告(E_ALL^E_NOTICE);在index.php的顶部,它工作了!!谢谢!然而,最好的方法是解决问题,而不是隐藏它。在脚本顶部的一个简单的“Undefinex index”通知可能会在代码的后面变成一个重大错误。完全正确,但这是一个快速修复方法,可以在本地系统上继续工作。我必须改进它,找到主要问题并确定解决它。