概要

DB に新しい行を追加するのが INSERT INTO ... VALUES (...) 文。INSERT INTO users (name, age) VALUES (?, ?) のように「どのテーブルの・どの列に・何の値を入れるか」を書く。列名を明示する書き方を基本にする (テーブル設計が変わっても壊れにくい)。

値の渡し方は ch04 と同じ prepare + execute。INSERT でも文字列連結は厳禁で、ユーザー入力をそのまま VALUES (...) に埋めると SQL インジェクションの穴になる。

INSERT 特有のテーマが 採番された ID の取得id INTEGER PRIMARY KEY AUTOINCREMENT (SQLite) / AUTO_INCREMENT (MySQL) / SERIAL (PostgreSQL) のように DB に自動採番させる カラム設計が一般的で、その値は INSERT 直後に $pdo->lastInsertId() で取り出せる。「INSERT → ID 取得 → 関連テーブルにその ID で INSERT」という連鎖は頻出パターン。

学習目標

ドリル

no 内容
01 1 件 INSERT して、SELECT で全件確認
02 1 件 INSERT して、lastInsertId を出力

演習: ドリル 01 — INSERT して全件確認

問題

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

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

期待される出力:

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

ヒント

演習: ドリル 02 — lastInsertId を出力

問題

users テーブルに 新人 (22 歳) を 1 件追加してから、 自動採番された ID を "追加したIDは {id}" の形で出力してください。

初期データは 太郎 (id=1) と 花子 (id=2) の 2 件なので、 追加した行の ID は 3 になるはず。

期待される出力:

追加したIDは 3

ヒント

この章を AI に聞く

  1. 「ch05 — INSERT で 1 件追加する」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch05 — INSERT で 1 件追加する」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch05 — INSERT で 1 件追加する」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch05 — INSERT で 1 件追加する」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE