2015-05-04 69 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