2015-05-04 68 views
0

我正在爲一個學校項目編寫一個基本的PHP登錄系統,目前我正試圖實現電子郵件激活。這是我的代碼片段。PHP - 數據庫列數據查詢返回另一列數據

 $query = " 
     SELECT 
      id, 
      username, 
      password, 
      salt, 
      email 
      useractivestatus 
     FROM users 
     WHERE 
      username = :username 
    "; 

    // The parameter values 
    $parameters = array( 
     ':username' => $_POST['username'] 
    ); 

    try 
    { 
     // Execute the query against the database 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute($parameters); 
    } 
    catch(PDOException $err) 
    { 

     die("Failed to run query: " . $err->getMessage()); 
    } 
    $row = $stmt->fetch(); 
    if($row) 
    { 
    if($active != $row['useractivestatus']); 
    { 
     die("Account has not been activated"); 
    } 

的問題是使用的var_dump $行[「useractivestatus」]我可以看到它總是從電子郵件列返回的數據,導致查詢始終返回false並觸發模響應。我可以做var_dump $ row ['任何其他列']並返回正確的數據。爲什麼在查詢useractivestatus列時它會返回電子郵件?

回答

2

您在查詢中缺少逗號,因爲此類電子郵件實際上已被別名爲useractivestatus,並且嘗試從電子郵件列中選擇將失敗。

$query = " 
SELECT 
    id, 
    username, 
    password, 
    salt, 
    email, -- this comma was missing 
    useractivestatus 
FROM users 
WHERE 
    username = :username 
+0

噢,天哪,那個傷害,我是個白癡。謝謝。 – STiGYFishh

+0

發生在我們身上,快樂編碼:) – Augwa