要在ID信息

时间:2015-06-18 18:21:48

标签: php mysql pdo

我有下表:

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

2 个答案:

答案 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]返回一个布尔值,表示查询成功,而不是结果集。