2016-11-19 31 views
0

嘗試了一個小時了。請幫助。基本上我想每次用戶登錄時更新lastlogin列(MYSQL datetime)。沒有錯誤消息,也沒有更新正在發生。到底是怎麼回事?MYSQL PDO更新日期時間什麼都不做

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()); }  
+0

MYSQL - lastlogin \t日期時間\t \t \t是\t NULL – Roger

+0

哦,今天我的上帝,沒有一個人的PDO您正在使用PDO的佔位符的工作 –

+0

,這是偉大的,但用引號括起來('':id'')是不正確的。應該保留佔位符。 – tadman

回答

0

我認爲問題來自於您的日期格式。

嘗試通過'Y/m/d h:i:s'更換'Y/m/d h:i:s a'(除去一個

+0

不工作:(傷心我 – Roger

+0

和'YMD H:我:S'?(沒有看到這些斜槓) – FLX

+0

不行!不工作以及它登錄時不更新。 – Roger