2016-01-13 47 views
0

我使用此代碼來更新用戶上次登錄一旦點擊註銷鏈接它會結束會話,並帶我索引,PHP但最後登錄時間不更新,我看不到錯誤信息更新最後登錄會話在PHP pdo

<?php 
session_start(); 

$db_host = "localhost"; 
$db_user = "root"; 
$db_pass = ""; 
$db_name = "account"; 

    try { 
    $db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); 
    $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin WHERE ID = :ID"); 


$stmt->bindParam(':lastlogin', $time); 
$stmt->bindParam(':ID', $_SESSION['ID']); 


$time = date('Y-m-d h:i:s'); 
//$ID = $_SESSION['ID']; 

    $stmt->execute(); 
    session_destroy(); 
    header('location:index.php'); 

    } 
catch(PDOException $e) 
    { 
    echo "Error:" . $e->getMessage(); 
    } 
$db_conn = null; 

?> 
+0

爲什麼不只是使用mysql的時間? 'now()'.. – chris85

+0

你也應該在他們爲你工作時開始接受答案。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – chris85

+0

祝你好運,我在另一個線程。 – chris85

回答

0

您需要在使用它之前定義$時間:

$time = date('Y-m-d h:i:s'); 
$id = $_SESSION['ID']; 
$stmt->bindParam(':lastlogin', $time); 
$stmt->bindParam(':ID', $id); 

請確保您有在$_SESSION['ID']

+0

該文檔不支持該聲明,http://php.net/manual/en/pdo.prepared-statements.php。請參閱示例1. – chris85

0

我做了這個值,它工作得很好

<?php 
session_start(); 

$db_host = "localhost"; 
$db_user = "root"; 
$db_pass = ""; 
$db_name = "account"; 
    try { 
     $time = date('Y-m-d h:i:s'); 
     $username = $_SESSION['username']; 

    $db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); 
    $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin WHERE username = '$username'"); 
$stmt->bindParam(':lastlogin', $time); 
//$stmt->bindParam(':username', $_SESSION['username']); 
$stmt->execute(); 
    session_destroy(); 
    header('location:index.php');  


    } 
catch(PDOException $e) 
    { 
    echo "Error:" . $e->getMessage(); 
    } 
$db_conn = null; 


?> 
+0

您是否指出此答案與原始帖子中的內容有所不同?這對有可能在未來學習的讀者會有所幫助。 (你也可以接受這個答案,通過點擊它左邊的刻度標記 - 在這裏接受自己的答案就可以了)。 – halfer