2

对 PHP 并不陌生,但对 PDO 来说只有一天的历史。我肯定在这里做错了什么。

    $query = $conn->prepare("SELECT * FROM admins WHERE username = :username AND password = :password");
    $query->execute(array('username' => $username,'password' => sha1($password)));
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    if (count($result) > 0)
    {
        $_SESSION['user']['who']        = $result[0]['who'];
        $_SESSION['user']['email']  = $result[0]['email'];
        $_SESSION['user']['username']   = $result[0]['username'];
        echo REFRESH;
    }
    else
    {
        $message = "Invalid username / password.";  
    }

我可以正确声明它们的唯一方法$_SESSIONS是如果我使用我$result[0]['fieldName'];如何才能通过它访问它$result['fieldName'];

4

2 回答 2

9

fetchAll,正如文档所说,同时检索所有获取数据的数组。由于您正在使用FETCH_ASSOC,因此会获取关联数组的数组。如果您确定只返回一列或只对返回的第一列感兴趣,只需使用fetch. 否则,您必须迭代fetchAll结果或执行您已完成的操作。

于 2012-12-28T21:25:07.770 回答
-1

采用:

foreach( $result as $row )  
{  
    $_SESSION['user']['who']  = $row['who'];
    .... and so on
}
于 2012-12-28T21:23:39.400 回答