3

我正在尝试从我网站上的表中获取所有记录,我有以下内容

$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != ''");
$sth->execute();

/* Exercise PDOStatement::fetch styles */
$result = $sth->fetch(PDO::FETCH_ASSOC);
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $result) {
    echo $result[First_Name];
}

只有它没有返回所有记录,只有我的第一个,有人能看到我哪里出错了吗?

4

2 回答 2

11

您需要使用循环:

while ($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    echo $result[First_Name];
    echo ' ' . $result[Surname];
}

或者你可以使用fetchAll方法:

foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $result) {
    echo $result[First_Name];
    echo ' ' . $result[Surname];
}

并且注意:如果First_NameandSurname不是常量,那么你应该使用字符串作为键名。

$result['First_Name']$result['Surname']

于 2012-10-19T09:01:21.160 回答
6

好吧,你只打电话$sth->fetch一次。您需要遍历结果。

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
   echo $row['First_Name'] . ' ' . $row['Surname'] . "\n";
}

也不要在没有大括号的情况下调用数组字符串索引。这样,PHP 会检查键是否为 CONSTANT,然后将其转换为字符串。这只是不好的做法,可能会导致意外的行为。

如果这只返回一行,您可能在数据库(或结果集中)中只有一行。向我们展示更多代码!

于 2012-10-19T09:01:39.640 回答