我是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中运行我的网站?
答案 0 :(得分:0)
首先定义数组:
$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']) . '%';
答案 1 :(得分:0)
如果这是导致错误的第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']) . '%';
}
<强> N.B。你不应该在控制器中做这种繁重的操作。在模型上执行数据库操作。