topic: db (PDO / SQL / マルチDB) / ch07 — fetch のモード / 演習 01

📝 ドリル 01 — fetchAll(PDO::FETCH_ASSOC)

問題

users テーブルを id 昇順で fetchAll(PDO::FETCH_ASSOC) で取得して、 各行を "{id}: {name}" 形式で出力してください。

初期データ:

1: 太郎
2: 花子
3: 次郎

期待される出力:

1: 太郎
2: 花子
3: 次郎

採点

php scripts/grade.php topics/11-db/ch07-fetch-modes/drill/01-fetch-assoc/

ヒント

  • $stmt = $pdo->query("SELECT id, name FROM users ORDER BY id");
  • $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  • foreach ($rows as $row) で回す

テストケース

期待される出力

1: 太郎
2: 花子
3: 次郎

📄 starter.php(雛形)

このコードから書き始めてください。

<?php

$pdo = new PDO('sqlite:' . getenv('DOJO_DB_PATH'));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// TODO: SELECT id, name FROM users ORDER BY id を実行する

// TODO: fetchAll(PDO::FETCH_ASSOC) で全件を連想配列の配列として取得する

// TODO: 各行を "{id}: {name}" の形式で出力する
✅ 解答例を見る(自分で解いてから)
<?php

$pdo = new PDO('sqlite:' . getenv('DOJO_DB_PATH'));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->query("SELECT id, name FROM users ORDER BY id");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($rows as $row) {
    echo "{$row['id']}: {$row['name']}\n";
}