Referencing to an associative array value from PDO::FETCH_ASSOC

若如初见. 提交于 2019-12-25 02:44:58

问题


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@address.com';


$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@address.com))

回答1:


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



回答2:


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


来源:https://stackoverflow.com/questions/22620530/referencing-to-an-associative-array-value-from-pdofetch-assoc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!