Ronnie
Ronnie

Reputation: 11198

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']; ?

Upvotes: 2

Views: 20561

Answers (2)

Explosion Pills
Explosion Pills

Reputation: 191729

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.

Upvotes: 9

ethrbunny
ethrbunny

Reputation: 10469

use:

foreach( $result as $row )  
{  
    $_SESSION['user']['who']  = $row['who'];
    .... and so on
}

Upvotes: -1

Related Questions