topic: db (PDO / SQL / マルチDB) / ch05 — INSERT で 1 件追加する / 演習 01

📝 ドリル 01 — INSERT して全件確認

問題

users テーブルに 新人 (22 歳) を 1 件追加してから、 id 昇順で全件を "{id}: {name} ({age})" 形式で出力してください。

初期データは 太郎 (id=1, 20 歳) と 花子 (id=2, 25 歳) の 2 件。 INSERT 後は 3 件 出力されるはず。

期待される出力:

1: 太郎 (20)
2: 花子 (25)
3: 新人 (22)

採点

php scripts/grade.php topics/11-db/ch05-insert/drill/01-insert-one/

ヒント

  • $pdo->prepare("INSERT INTO users (name, age) VALUES (?, ?)") を使う
  • $stmt->execute(['新人', 22]) で値を渡す
  • 確認は SELECT id, name, age FROM users ORDER BY idforeach で回す

テストケース

期待される出力

1: 太郎 (20)
2: 花子 (25)
3: 新人 (22)

📄 starter.php(雛形)

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

<?php

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

// TODO: users テーブルに '新人' (22 歳) を 1 件 INSERT する

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

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

$stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (?, ?)");
$stmt->execute(['新人', 22]);

foreach ($pdo->query("SELECT id, name, age FROM users ORDER BY id") as $row) {
    echo "{$row['id']}: {$row['name']} ({$row['age']})\n";
}