用户使用pdo登录时更新字段

时间:2018-03-25 18:27:34

标签: php pdo

这是我的代码:

date_default_timezone_set('UTC');
$now = date('l jS \of F Y h:i:s A');
$host = 'localhost';
$dbname = 'myDB';
$username = 'james';
$paswword = '12345';
$dsn = 'mysql:host='. $host .';dbname='. $dbname;

try  
{  
    $connect = new PDO($dsn, $username, $password);  
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $connect->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    $connect->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);


} catch (PDOException $e) { 
    $message = $e->getMessage()."<br>";
    die();
}

$sql = 'SELECT * FROM people WHERE email = :email && password = :password';
$stmt = $connect->prepare($sql);

$stmt->execute(['email' => $email, 'password' => $pass]);
$result = $stmt->fetch();
if($result)  
{  
        $_SESSION["username"] = $post->firstname;  
        $_SESSION["id"] = $post->id;
        $sql = 'UPDATE people SET last_log_date = :now && WHERE id = :id';
        //error happens here
        $stmt = $connect->prepare($sql);
        $stmt->execute(['last_log_date' => $now, 'id' => $_SESSION["id"]]);
        $connect = null;
        header("location:welcome.php");  
}  
else  
{  
        $connect = null;
        $_SESSION["err_msg"] = 'The password or email does not match';
        header("location:loginForm.php");
}

?>

我的代码将检查用户是否正确登录,但是当我更新last_log_date时,我每次都会收到致命错误。我不明白为什么在取出后我无法更新字段。错误说明类似于SQLSTATE [42000]:语法错误或访问冲突:

如何在用户登录后正确更新字段。请提供任何帮助

2 个答案:

答案 0 :(得分:3)

您应该绑定正确的命名参数now

 $stmt->execute([':now' => $now, ':id' => $_SESSION["id"]]);

答案 1 :(得分:1)

你的where子句之前的&&与此无关。删除它(检查SQL语法)