Intereting Posts
Msgstr "Соединение для элемента управления, определенное в вашей конфигурации, не удалось" с phpMyAdmin в XAMPP Facebook PHP SDK 3 не будет работать на 32-битной системе, иидентификаторы facebook, обработанные как int, и могут быть> 2147483647, лучшее решение? Исправление Chrome Origin null не разрешено Access-Control-Allow-Origin Перемещение php-проекта в кодовое средство или обновление существующей структуры Настройка сервера WAMP для отправки электронной почты Функция PHP с неограниченным количеством параметров Групповой массив по значениям субарама как заменить img url в массиве Ввод переменного объема данных в базу данных с наилучшей возможной нормализацией Регулярное выражение для проверки даты – dd / mm / yyyy – PHP Как принудительно загрузить файл с помощью PHP PHP ajax redirect Передавать массив массива в функцию PostgreSQL Mongo DB $ или запрос в PHP Захват текста между квадратными скобками в PHP

PHP MySQL Yii – чтение базы данных не пишет

У меня есть работающее приложение Yii на моем местном стеке ламп. Теперь, когда я помещаю приложение на сервер лампы, приложение читает db и запускается, но приложение не успешно записывает в db. У меня нет журналов ошибок. Есть предположения?

Вот как я обновляю db:

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('Ymd H:i:s'); if ($model->validate()) { $model->save(); } else { $this->render('notice'); } return $model; } 

Странно, даже когда db не обновляет Login_Count и Last_Logged, пользователь по-прежнему перенаправляется на свой URL-адрес, поэтому sql должен быть действительным, потому что страница уведомления никогда не загружается. Есть предположения?

Обновление + решение

Проблема заключалась в том, что на сервере mysql была установлена ​​автокомбинация на false. Чтобы переопределить это на уровне приложения, добавьте следующую строку в массив config / main.php db:

 'db'=>array( ... 'initSQLs'=>array('SET AUTOCOMMIT=1',), ... ); 

Yii: использование активной записи с отключением autocommit на сервере mysql

Отправка страницы 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('Ymd H:i:s'); if ($model->save()) { $this->redirect($model->URL."?".$model->Unique_ID); } else { // echo CHtml::errorSummary($model) $this->render('notice'); } }