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_NameSurnameが定数でない場合

$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 かどうかをチェックし、それを文字列にキャストします。これは悪い習慣であり、予期しない動作につながる可能性があります。

これで 1 行しか返されない場合は、データベース (または結果セット) に 1 行しかない可能性があります。もっとコードを見せてください!

于 2012-10-19T09:01:39.640 に答える