php - 在mysql中插入上次登录

标签 php mysql pdo

我有一个登录脚本,我想将上次登录插入成员表并在每次成员登录时更新它,但我遇到了一些问题。每次用户登录时都不会插入 laSTLogin。这是我的代码

if(isset($_POST['submit'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if($user->login($username,$password)){
        $_SESSION['username'] = $username;

        try{
            $stmt = $db->prepare('UPDATE admin  SET login_date = now()');
        }

        catch (PDOExeception $e){
            $error[] = $e->getMessage();
        }
        header('Location: index.php');
        exit;
    } 
  else {      
           $error[] =              
                      '<div class="alert alert-danger fade in text-center">
                           <a href="#" class="close" data-dismiss="alert">&times;</a>
                           <strong>Error!</strong> 
                            Wrong username or password or your account has not been activated.
                      </div>';
    }

}

最佳答案

您的上述代码似乎有两个错误。

  1. UPDATE 没有 where 子句,因此它将更新 admin 表中所有行的 login_date

  2. 您通过在 $db 上调用 prepare() 创建一个 PDOStatement 对象,但从不执行该语句。您需要在声明 $stmt 之后调用 $stmt->execute() 来执行该语句。

您的代码应该类似于:

if(isset($_POST['submit'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if($user->login($username,$password)){
        $_SESSION['username'] = $username;

        try{
            $stmt = $db->prepare('UPDATE admin  SET login_date = now() WHERE x = y');
            $stmt->execute();
        }

        catch (PDOExeception $e){
            $error[] = $e->getMessage();
        }
        header('Location: index.php');
        exit;
    } else {      
           $error[] =              
                      '<div class="alert alert-danger fade in text-center">
                           <a href="#" class="close" data-dismiss="alert">&times;</a>
                           <strong>Error!</strong> 
                            Wrong username or password or your account has not been activated.
                      </div>';
    }

}

关于php - 在mysql中插入上次登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45305203/

相关文章:

php - 如何用 PHPUnit 比较相似的 XML?

php - 在 Codeigniter 的表单验证中仅接受英文字符

php - 如果表中没有数据,如何在php中显示消息

php - 与普通的 mysql 连接相比,在 php 中使用 PDO 是否会使用大量资源?

php - mySQL 与 PHP 到 JSON 用于客户端图表

php - Codeigniter - 文件夹名称更改时未找到 404 页面

mysql - Node mysql顺序查询执行

Mysql连接多个总计——使查询高效

php - 从文件导入sql语句时的编码问题

php - 在 MySQL 中使用准备好的语句是否可以防止 SQL 注入(inject)攻击?