Reputation: 838
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
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
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