YII PHP通知未定义索引:title
我是YII的新手,我在站点加载时出错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
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”通知可能会在代码的后面变成一个重大错误。完全正确,但这是一个快速修复方法,可以在本地系统上继续工作。我必须改进它,找到主要问题并确定解决它。