我在Yii有一个网站。它工作得很好。但是,当我升级MySql时,我遇到了一些错误。
1。)date():
依靠系统的时区设置是不安全的。
但我已经通过定义时区解决了这个问题。
2.。)未定义的索引:注册。
我无法解决它。那么,我该怎么办?我的代码如下:
public function actionIndex() {
$model = new Supplier('search');
$model1 = new Registration('search');
$model->unsetAttributes();
$model1->unsetAttributes();
if (isset($_REQUEST['Supplier'] , $_REQUEST['Registration']))
$model->setAttributes($_REQUEST['Supplier']);
$model1->setAttributes($_REQUEST['Registration']); // here is the error.
$this->render('admin', array(
'model' => $model,
'model1' => $model1,
));
}
在这里,如果我在我的网址中定义$_REQUEST['Registration']
,那么它会起作用,但我不能这样做,因为它在我的网站中无处不在。升级Mysql后出现错误。那么,我该怎么办?
谢谢,
答案 0 :(得分:1)
好吧我不知道代码应该做什么,但是第一件事我注意到了:
if (isset($_REQUEST['Supplier'] , $_REQUEST['Registration']))
$model->setAttributes($_REQUEST['Supplier']);
$model1->setAttributes($_REQUEST['Registration']); // here is the error
这部分缺少花括号。
if (isset($_REQUEST['Supplier'] , $_REQUEST['Registration'])){
$model->setAttributes($_REQUEST['Supplier']);
$model1->setAttributes($_REQUEST['Registration']); // here is the error
}
会更有意义。否则,即使isset为假,它也会尝试设置注册。
答案 1 :(得分:1)
您的错误:
if (isset($_REQUEST['Supplier'], $_REQUEST['Registration']))
$model->setAttributes($_REQUEST['Supplier']);
$model1->setAttributes($_REQUEST['Registration']); // here is the error.
它与:
相同if (isset($_REQUEST['Supplier'], $_REQUEST['Registration'])) {
$model->setAttributes($_REQUEST['Supplier']);
}
$model1->setAttributes($_REQUEST['Registration']); // here is the error.
即使未设置,您也试图获得$_REQUEST['Registration']
。所以,要修复它,请更改代码:
if (isset($_REQUEST['Supplier'], $_REQUEST['Registration'])) {
$model->setAttributes($_REQUEST['Supplier']);
$model1->setAttributes($_REQUEST['Registration']);
}
对于任何喜欢忽略花括号的人来说,当if
块有一个语句时,通常会出错。我强烈建议在任何情况下使用花括号,即使在if
块下只有一个语句。
方法不正确:
if (true)
do_something();
正确方法:
if (true) {
do_something();
}
如果使用不正确的方法,当您在if
块中添加其他指令时,您会遇到很多情况。但实际上你会在块之外添加指令。