我有下表:
tbl_users
==============
id
username
password
email
我有以下代码来获取用户的所有ID,我只想显示id字段。但我无法让它发挥作用。
$db = $DB_con;
$stmt = $db->prepare("SELECT * FROM tbl_users");
$result = $stmt->execute();
while ($row = $result->fetchAll(PDO::FETCH_ASSOC)){
echo $row['id'];
}
我一直收到以下错误:
Notice: Undefined index: id in
答案 0 :(得分:4)
fetchAll会返回所有行。所以你不应该在循环内调用它。
您可以通过不同方式解决这个问题。这是一个:
// Get the entire dataset
$rows = $result->fetchAll(PDO::FETCH_ASSOC));
// Loop through the array
foreach ($rows as $row)
{
echo $row['id'];
}
另一种方式(您打算编写的方式)是使用fetch
而不是fetchAll
逐行获取行:
while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
echo $row['id'];
}
顺便说一下,如果您只需要id
,那么最佳做法是select id from yourtable
,而不是使用*
选择所有内容。它将使查询(以及您的页面)更快,并减少数据库的负载。
答案 1 :(得分:1)
首先,您应该使用vsim -c test_bench -do "onfinish stop; run -all"
来循环搜索结果。
foreach
注意:fetchAll返回一个多维数组。因此,在foreach循环之外,您可以使用$stmt = $db->prepare( "SELECT id FROM tbl_users;" );
$stmt->execute();
$result = $stmt->fetchAll( PDO::FETCH_ASSOC );
foreach ($result as $row => $value) {
echo $value['id'];
}
来访问值。
此外,$result[$row_number][$column_name]
返回一个布尔值,表示查询成功,而不是结果集。