PHP - 数据库列数据查询返回另一列数据

时间:2015-05-04 02:30:37

标签: php mysql database

我正在为学校项目编写基本的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 $ row [' useractivestatus']我可以看到它总是从电子邮件列返回数据,导致查询始终返回false并触发die响应。我可以执行var_dump $ row [' 任何其他列']并返回正确的数据。为什么在查询useractivestatus列时它会返回电子邮件?

1 个答案:

答案 0 :(得分:2)

您的查询中缺少逗号,因为此类电子邮件实际上是别名为useractivestatus,并且尝试从电子邮件列中进行选择将失败。

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