概要

接続できたら、まずやりたいのは 「テーブルからデータを取り出す」 こと。これを担う SQL が SELECT で、基本形は SELECT * FROM users のように「どの列を・どのテーブルから」を書くだけ。* は全列、SELECT id, name FROM users のように 列を絞る 書き方も覚えておく (取りすぎない方が速い)。

PHP 側では $pdo->query("SELECT ...") で SQL を投げて結果セットを受け取る。行の取り出しは foreach ($pdo->query(...) as $row)1 行ずつ回す か、$stmt->fetchAll()配列にまとめて受け取る の 2 パターン。件数が少ないなら fetchAll()、何万件なら foreach でストリーミング。

取り出された $row連想配列 で、$row['id'] / $row['name'] のように列名でアクセスする。値は基本すべて文字列で来るので、数値計算したいときは (int)$row['age'] のようにキャストする。「SQL を 1 つ書いて結果を foreach で回す」基本リズムを身体に通す。

学習目標

ドリル

no 内容
01 users を全件 SELECT して id: name 形式で出力
02 COUNT(*) で件数を出力
03 name 列だけ取り出し、改行区切りで出力

演習: ドリル 01 — 全件 SELECT して "id: name" 形式で出力

問題

users テーブル (id, name, age) には次の 3 行が入っています。

id name age
1 太郎 20
2 花子 25
3 次郎 30

id の昇順で全件 SELECT し、各行を id: name の形式 (id と name を : で連結) でちょうど 3 行出力してください。

期待される出力:

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

ヒント

演習: ドリル 02 — 件数を出力

問題

users テーブルの行数を SELECT COUNT(*) で取得し、その数字をちょうど 1 行で出力してください。

users には 3 行入っています (前の drill と同じデータ)。

期待される出力:

3

ヒント

演習: ドリル 03 — name 列だけを取り出して改行区切りで出力

問題

users テーブルから name 列だけを id 昇順で取得し、各名前を 1 行ずつ出力してください。

users には 3 行入っています (前の drill と同じデータ)。

期待される出力:

太郎
花子
次郎

ヒント

この章を AI に聞く

  1. 「ch03 — SELECT 基本 / fetchAll / ループ」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch03 — SELECT 基本 / fetchAll / ループ」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch03 — SELECT 基本 / fetchAll / ループ」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch03 — SELECT 基本 / fetchAll / ループ」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE