概要

SELECT で取り出した結果セットの 読み出し方 には、目的別にいくつか手段がある。ここまでは fetchAll() だけ使ってきたが、PDO には用途別の関数があり、適切に選ぶとコードが短くなりメモリも節約できる。

主要な顔ぶれは 3 つ。fetchAll(PDO::FETCH_ASSOC)全行を連想配列の配列 で取る。fetch() は 1 回ごとに 1 行だけ 取り出すループ用で、while ($row = $stmt->fetch()) の形で何万件にも対応できる (全件をメモリに載せない)。fetchColumn() は最初の列の 単一値 を返す関数で、COUNT(*) などの集計や 1 項目取得にぴったり。

fetchAllFETCH モード には FETCH_ASSOC (連想配列) / FETCH_NUM (数値添字) / FETCH_OBJ (オブジェクト) などがあり、実務では FETCH_ASSOC 固定が多い。意識すべきは「件数が多いときは fetch でストリーミング」「単一値は fetchColumn」の使い分け。

学習目標

ドリル

no 内容
01 fetchAll(PDO::FETCH_ASSOC) で全件取得して表示
02 fetchColumn で COUNT(*) の単一値を取得

演習: ドリル 01 — fetchAll(PDO::FETCH_ASSOC)

問題

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

初期データ:

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

期待される出力:

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

ヒント

演習: ドリル 02 — fetchColumn で COUNT(*)

問題

users テーブルの 件数SELECT COUNT(*) FROM users で取得して、 "件数: {n}" の形式で出力してください。 取り出しには fetchColumn() を使うこと。

初期データは 4 件入っているので、出力は 4 になる。

期待される出力:

件数: 4

ヒント

この章を AI に聞く

  1. 「ch07 — fetch のモード」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch07 — fetch のモード」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch07 — fetch のモード」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch07 — fetch のモード」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE