Skip to content
Advertisement

PDO fetch / fetchAll

Not new to PHP, but only a day old to PDO. Surely I am doing something wrong here.

    $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.";  
    }

the only way I can declare those $_SESSIONS properly is if I use $result[0]['fieldName']; How can I just access it via $result['fieldName']; ?

Advertisement

Answer

fetchAll, as the documentation says, retrieves an array of all fetch data simultaneously. Since you are using FETCH_ASSOC, an array of associative arrays is fetched. If you know for certain that only one column is being returned or are only interested in the first column returned, just use fetch. Otherwise you have to iterate over the fetchAll results or do what you’ve done.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement