Giovanni
Giovanni

Reputation: 838

Referencing to an associative array value from PDO::FETCH_ASSOC

Im having a very basic problem using PDO and i need some help - chances are I have a syntax error somewhere but i cant for the life of me find it (im new to PDO and havent used associative arrays very much so focus on this part of the code!)

I am selecting all the data from my database associated with a user with a certain email address using the following code:

$id = '[email protected]';


$stmt = $db->prepare('SELECT * FROM first_page WHERE email=?');
$stmt->bindValue(1, $id, PDO::PARAM_STR);
$stmt->execute();
$resulty = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($resulty);
echo $resulty['title'];

the print_r displays the associative array in its entirety, but the echo doesnt show the stored value for the column 'title'. There is a column called 'title' in the database, so im presuming im referencing it incorrectly. However it looks near identical to an example I have in a book in front of me so I dont know where to start looking!

The print_r output is:

Array ( [0] => Array ( [user_id] => 93 [time_stamp] => 2014-03-04 22:00:16 [title] => Mr [first_name] => Pete [surname] => John [phone] => 2147483647 [email] => [email protected]))

Upvotes: 0

Views: 263

Answers (2)

larsAnders
larsAnders

Reputation: 3813

In order to scale this up - i.e. if you have more than a single result, you can use a foreach loop with the array $resulty. This eliminates the need to use $resulty[0], $resulty[1], etc.

foreach ($resulty as $result){
    echo $result['title'];
}

Upvotes: 1

Bill Karwin
Bill Karwin

Reputation: 562871

$stmt->fetchAll() returns an array of associative arrays, because it supports returning more than one row worth of data.

Even if your result set has one row, fetchAll() still returns an array of one element, which is the associative array for the one row.

So you need:

echo $resulty[0]['title'];

Upvotes: 3

Related Questions