MYSQL PDO更新datetime什么都不做

时间:2016-11-19 08:19:10

标签: php mysql pdo

已经试了一个小时。请帮忙。基本上我想每次用户登录时更新lastlogin列(MYSQL datetime)。没有错误消息,也没有更新。发生了什么事?

db.php中

<?php 



    // These variables define the connection information for your MySQL database 

    $username = "root"; 

    $password = "root"; 

    $host = "localhost"; 

    $dbname = "rofl"; 



    $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 

    try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); } 

    catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());} 

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

    header('Content-Type: text/html; charset=utf-8'); 

    session_start();        

?>

main.php

<?php 
    include("DB/db.php"); 


        if(!empty($_POST)){   
            $query = " 
                SELECT 
                    userID, 
                    password, 
                    salt, 
                    email 
                FROM user 
                WHERE 
                    userID = :username 
            "; 
            $query_params = array( 
                ':username' => $_POST['useridforlogin'] 
            ); 

            try{ 
                $stmt = $db->prepare($query); 
                $result = $stmt->execute($query_params); 
            } 
            catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); } 
            $login_ok = false; 
            $row = $stmt->fetch();

            if($row){ 
                $check_password = hash('sha256', $_POST['passwordforlogin'] . $row['salt']); 
                for($round = 0; $round < 65536; $round++){
                    $check_password = hash('sha256', $check_password . $row['salt']);
                } 
                if($check_password === $row['password']){
                    $login_ok = true;
                } 
            } 
            if($login_ok){ 
                unset($row['salt']); 
                unset($row['password']); 
                $_SESSION['user'] = $row;  

             date_default_timezone_set('Asia/xxxxxx');
    $timestamp = date('Y/m/d h:i:s a', time()); 
    $query2 = "UPDATE user SET lastlogin= ':lastlogin' where userID =  ':username'";
            $query_params2 = array(  
                ':lastlogin' => $timestamp,
               ':username' => $_POST['useridforlogin']
               ); 
              try {  
                $stmt2 = $db->prepare($query2); 
                $result2 = $stmt2->execute($query_params2); 
            }  catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); }     

1 个答案:

答案 0 :(得分:0)

我认为问题来自您的日期格式。

尝试将'Y/m/d h:i:s a'替换为'Y/m/d h:i:s'(删除 a

相关问题