我想跟踪用户上次登录的时间,因此我在数据库中添加了带时间戳的列,每次用户登录时都可以更新,并在登录功能中添加了更新,但是当我登录时出现错误说“ SQLSTATE [HY000]:一般错误”,数据库没有任何反应,但是如果我再次单击“登录”,它将很好地登录我并根据需要更新表。这是我的登录功能:
public function login($email,$upass)
{
try
{
$stmt = $this->conn->prepare("SELECT * FROM po_users WHERE userEmail=:email_id ");
$stmt->execute(array(":email_id"=>$email));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1)
{
if($userRow['userStatus']=="Y")
{
if($userRow['userPass']==md5($upass))
{
$_SESSION['userSession'] = $userRow['userID'];
$stmt = $this->conn->prepare("UPDATE po_users SET lastLogIn = current_timestamp WHERE userEmail=:email_id");
$stmt->execute(array(":email_id"=>$email));
$userRow=$stmt->fetchAll(PDO::FETCH_ASSOC);
return true;
}
有任何想法吗?
您实际上无法在更新后使用“ fetchAll” ...因此,请尝试以下操作:
public function login($email,$upass) {
try {
$select_user_stmt = $this->conn->prepare("SELECT * FROM po_users WHERE userEmail=:email_id ");
$select_user_stmt->execute(array(":email_id"=>$email));
$userRow = $select_user_stmt->fetch(PDO::FETCH_ASSOC);
if($select_user_stmt->rowCount() == 1) {
if($userRow['userStatus']=="Y") {
if($userRow['userPass'] == md5($upass)) {
$_SESSION['userSession'] = $userRow['userID'];
$update_user_stmt = $this->conn->prepare("UPDATE po_users SET lastLogIn = current_timestamp WHERE userEmail=:email_id");
$update_user_stmt->execute(array(":email_id"=>$email));
$select_user_stmt->execute(array(":email_id"=>$email)); // do a search again here...
$userRow = $select_user_stmt->fetch(PDO::FETCH_ASSOC);
return true;
}
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句