2017-01-12 8 views
0

ユーザが最後にログインしたときにトラッキングしたいので、データベースにタイムスタンプが付けられているカラムを追加してログインするたびに更新できます。ログインの際には、 'SQLSTATE [HY000]:一般的なエラー'というエラーが表示され、データベースに何も起こりませんが、ログインをもう一度クリックすると、ここ は私のログイン機能である:2回目の試行ではクエリを処理しますが最初には実行しません

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; 
       } 

任意のアイデア?

+2

セッションが設定された後に賭けることが賭けるのは –

+0

どのように設定して更新するかに関する提案はありますか? – PHPNewbie

+1

セッションが最初に設定されているかどうかを確認してから、クエリを実行します - 'if/else' –

答えて

1

あなたが実際にアップデートした後、「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; 
       } 

・ホープ、このことができます!

+0

ありがとう!はい、私は考えていたと思っていたので、別の不要なif文の中にネストしました。 – PHPNewbie

関連する問題