Я хотел добавить новое поле в мою текущую систему, поле last_pwd_modified, которое будет хранить текущую временную метку в дБ всякий раз, когда пользователь захочет изменить свой пароль.
У меня проблемы с отладкой этого в течение нескольких часов, так как поле last_pwd_modified не будет хранить текущее время в дБ, а также постоянно происходит 500 (Внутренняя ошибка сервера). Я думаю, что это может быть неправильной передачей прохода last_pwd_modified, я пробовал несколько других способов передать его, но продолжаю терпеть неудачу.
Может ли кто-нибудь из экспертов указать на проблему в моем коде? Действительно ценю это и спасибо заранее за ваше время.
Вот моя модель
public function changePasswd($uid, $newpassword) {
$conditions=array();
$modelData = array(
'upwd' => sha1(strip_tags($newpassword)),
'uid' => $uid,
'last_pwd_modified' => "CURRENT_TIMESTAMP()");
$this->save($modelData);
}
Вот строка в моем контроллере, которая вызывает функцию
$this->users->changePasswd($uid,$ret_pwd);
И вот моя точка зрения модели
var changePassword = function () {
var $result = {};
$.ajax({
url: "users/changepwd",
type: "POST",
async: false,
data: $("#changePasswordID").serialize(),
success: function(result) {
$result = $.parseJSON(result);
}
});
}
Вам нужно использовать UNIX_TIMESTAMP
. CURRENT_TIMESTAMP
возвращает дату какY-m-d H:i:s
, использование UNIX_TIMESTAMP
без аргументов.
Кроме того, ваша библиотека базы данных может использовать подготовленный оператор или экранирование. Вероятно, вы не можете использовать функцию MySQL в качестве значения. Я думаю, вы могли бы попробовать 'last_pwd_modified' => time()
,
Других решений пока нет …