我有一个非常基本的问题使用PDO,我需要一些帮助 - 机会是我有一个语法错误,但我不能找到它的生活(我是PDO的新手,并没有非常使用关联数组所以专注于这部分代码!)
我使用以下代码选择与具有特定电子邮件地址的用户关联的数据库中的所有数据:
$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'];
print_r
完整地显示了关联数组,但echo
没有显示列'title'的存储值。 是数据库中名为“title”的列,所以我假设我错误地引用它。然而它看起来几乎与我面前的一本书中的例子相同,所以我不知道从哪里开始寻找!
print_r输出为:
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))
答案 0 :(得分:3)
$stmt->fetchAll()
返回一个关联数组数组,因为它支持返回多行数据。
即使你的结果集有一行,fetchAll()
仍会返回一个元素的数组,这是一行的关联数组。
所以你需要:
echo $resulty[0]['title'];
答案 1 :(得分:1)
为了扩展它 - 即如果你有多个结果,你可以使用带有数组$ resulty的foreach循环。这消除了使用$ resulty [0],$ resulty [1]等
的需要foreach ($resulty as $result){
echo $result['title'];
}