使用 PDO 插入两行而不是一行 MySQL

nic*_*ick 0 php mysql pdo

我正在尝试将登录数据插入登录表,并且我正在使用以下代码:

登录.php

$verify = password_verify($password, $results['user_password']);
if($verify){
    $session->logUser($results['user_id']);
    header('Location: dashboard.php');
}else{
    //Error
}
Run Code Online (Sandbox Code Playgroud)

然后在session.php我有一个会话类:

public function logUser($userId){
    $_SESSION['userId'] = $userId;

    $token = $this->createToken();
    $timestamp = time() + (86400 * 14);

    $connection = new Connection;
    $db = $connection->openConnection();

    $stmt = $db->query("INSERT INTO logins (login_token, login_userId, login_expires) VALUES ('$token', '$userId', '$timestamp')");
    $stmt->execute();
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,正在生成令牌,并且所有数据都是正确的,但是当我检查数据库时,它正在创建两条记录(相同的记录但具有不同的 auto_increment ID)。

为什么会这样?提前致谢。

编辑:我正在尝试创建持久登录来执行此令牌操作,我还没有创建 cookie,但首先我想测试登录数据是否正确存储在数据库中。

mww*_*web 5

你正在执行它两次。删除 $stmt->execute();

  • execute() 用于准备好的查询,您实际上并没有在这里使用 (3认同)