topic: db (PDO / SQL / マルチDB) / ch06 — UPDATE と DELETE / 演習 01
📝 ドリル 01 — WHERE で 1 件 UPDATE
問題
users テーブルの 花子 の年齢を 26 に書き換えてから、
id 昇順で全件を "{id}: {name} ({age})" 形式で出力してください。
初期データ:
1: 太郎 (20)
2: 花子 (25)
3: 次郎 (30)
期待される出力:
1: 太郎 (20)
2: 花子 (26)
3: 次郎 (30)
採点
php scripts/grade.php topics/11-db/ch06-update-delete/drill/01-update-age/
ヒント
$pdo->prepare("UPDATE users SET age = ? WHERE name = ?")を使う$stmt->execute([26, '花子'])で値を渡すWHEREを絶対に書く (忘れると全行が 26 になる)
テストケース
期待される出力
1: 太郎 (20)
2: 花子 (26)
3: 次郎 (30)
📄 starter.php(雛形)
このコードから書き始めてください。
<?php
$pdo = new PDO('sqlite:' . getenv('DOJO_DB_PATH'));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// TODO: name = '花子' の行の age を 26 に UPDATE する
// 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("UPDATE users SET age = ? WHERE name = ?");
$stmt->execute([26, '花子']);
foreach ($pdo->query("SELECT id, name, age FROM users ORDER BY id") as $row) {
echo "{$row['id']}: {$row['name']} ({$row['age']})\n";
}