概要

PHP から DB を触るには PDO (PHP Data Objects) という標準ライブラリを使う。PDO は SQLite / MySQL / PostgreSQL を 同じインターフェース で扱えるよう抽象化されていて、後から DB を切り替えても呼び出しコードはほぼ無修正で済む。実務でもまず PDO を覚えれば困らない。

接続時に渡す DSN (Data Source Name) は「どの種類の DB の・どこに繋ぐか」を表す文字列で、sqlite:/path/to.db / mysql:host=localhost;dbname=app;charset=utf8mb4 / pgsql:host=localhost;dbname=app のように DB 種類ごとに記法が違う。先頭の sqlite: / mysql: / pgsql: が DB の種類を切り替えるスイッチになる。

接続したら必ず setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) を呼ぶこと。これを設定しないと DB エラーが 静かに無視 される。設定しておけば SQL の失敗が即 PDOException として飛んでくるので、exception トピックで学んだ try / catch で扱える。

学習目標

ドリル

no 内容
01 SQLite に接続して「接続成功」と出力
02 接続中のドライバ名を取り出して出力

採点用 DB について

このチャプター以降、ドリルの採点ランナーは tests/setup.sql を一時 SQLite に流し込んで、そのファイルパスを環境変数 DOJO_DB_PATH で渡してきます。受講生コードは次の形で接続してください。

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

演習: ドリル 01 — SQLite に接続して「接続成功」と出力

問題

環境変数 DOJO_DB_PATH に渡されている SQLite ファイルに PDO で接続し、ちょうど次の 1 行を出力してください。

期待される出力:

接続成功

ヒント

演習: ドリル 02 — 接続中のドライバ名を出力

問題

PDO で SQLite に接続し、PDO::ATTR_DRIVER_NAME 属性を取り出して、接続中のドライバ名 (今回は sqlite) をちょうど 1 行で出力してください。

期待される出力:

sqlite

ヒント

この章を AI に聞く

  1. 「ch02 — PDO で SQLite 接続 / DSN 比較」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch02 — PDO で SQLite 接続 / DSN 比較」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch02 — PDO で SQLite 接続 / DSN 比較」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch02 — PDO で SQLite 接続 / DSN 比較」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE