PHP MySQL Yii - чтение базы данных не запись
У меня есть рабочее приложение Yii на моем локальном стеке ламп. Теперь, когда я помещаю приложение на сервер лампы, приложение читает БД и запускается, но приложение не успешно записывает в БД. Я не получаю журналы ошибок. Какие-нибудь мысли?
Вот как я обновляю базу данных:
public function actionIndex()
{
if ($_GET["yep"] == "") {
pd_error("You are not logged in!");
}
list($uid, $domain) = preg_split("/@/",$_GET["yep"],2);
$model=$this->loadModel($uid);
$this->redirect($model->URL."?".$model->Unique_ID);
}
public function loadModel($uid)
{
$model=People::model()->findByPk($uid);
$model->Login_Count++;
$model->Last_Logged=date('Y-m-d H:i:s');
if ($model->validate()) {
$model->save();
} else {
$this->render('notice');
}
return $model;
}
Странно то, что даже когда БД не обновляет Login_Count и Last_Logged, пользователь все равно перенаправляется на свой URL, поэтому sql должен быть действительным, потому что страница уведомлений никогда не загружается. Какие-нибудь мысли?
Обновление + Решение
В итоге проблема заключалась в том, что для сервера mysql было установлено автоматическое принятие значения false. Чтобы переопределить это на уровне приложения, добавьте следующую строку в массив config / main.php db:
'db'=>array(
...
'initSQLs'=>array('SET AUTOCOMMIT=1',),
...
);
Yii: использование активной записи с отключенной автоматической фиксацией на сервере MySQL
1 ответ
Оказание notice
страница не останавливает ваше перенаправление. Это может быть выполнено, но вы не сможете увидеть его из-за перенаправления. Попробуйте рефакторинг вашего кода.
- Вы проверяете свою модель дважды, и проверка, вероятно, может быть пропущена, поскольку данные от пользователя приложения не поступают.
- Вы не проверяете, если
People
Модель действительно найдена. - Есть
CWebUser::afterLogin
метод, который вы можете переопределить для такого рода вещей (обновить счетчик и дату последнего входа)
Может быть, этот способ (быстрое исправление) будет работать:
function actionIndex()
{
if ($_GET["yep"] == "") {
pd_error("You are not logged in!");
}
list($uid, $domain) = preg_split("/@/",$_GET["yep"],2);
if (null === ($model=People::model()->findByPk($uid))
throw new CHttpException(404);
$model->Login_Count++;
$model->Last_Logged=date('Y-m-d H:i:s');
if ($model->save()) {
$this->redirect($model->URL."?".$model->Unique_ID);
} else {
// echo CHtml::errorSummary($model)
$this->render('notice');
}
}