PHP未定义索引:title



我是YII的新手,我在站点加载上出现错误

PHP notice
Undefined index: title
PATHTOWEBSITEprotectedcontrollersSiteController.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         }

我怎么能解决这个错误,并运行我的网站在本地主机?

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

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

我相信这里唯一的选择是导致$_GET['title']

您不应该以这种置信度依赖$_GET数据。试着这样重写这段代码:

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

注意:你不应该在控制器里做这种繁重的操作。

先定义数组:

$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']) . '%';

最新更新