ch10 — DSN 比較 / 複数 DB 接続
スライドで見るこの章を AI と学ぶ
演習問題の詳細
この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。
ドリル 01 — DSN を 3 種類並べて、SQLite に実接続する
問題
環境変数 DOJO_DB_DRIVER を読み取り (未設定なら sqlite 扱い)、次の順で標準出力に表示する。
- 採用ドライバ名
- SQLite の DSN サンプル文字列
- MySQL の DSN サンプル文字列
- PostgreSQL の DSN サンプル文字列
- SQLite (
DOJO_DB_PATH) に実接続し、pingテーブルの行数を出力
期待される出力
driver: sqlite
sqlite DSN sample: sqlite:/path/to/file.sqlite
mysql DSN sample: mysql:host=localhost;dbname=mydb;charset=utf8mb4
pgsql DSN sample: pgsql:host=localhost;dbname=mydb
connected: yes (rows=1)
ヒント
getenv('DOJO_DB_DRIVER') ?: 'sqlite'でデフォルト値- DSN サンプルは 固定文字列を直接 echo する (実環境のパスではなく
/path/to/file.sqliteで OK) - SQLite への実接続は
new PDO('sqlite:' . getenv('DOJO_DB_PATH')) - 行数は
SELECT COUNT(*) FROM pingをfetchColumn()で取得 mysql/pgsqlの後ろのスペースは 2 つ。出力フォーマットを揃えるため
なぜ DSN サンプルを直接書くのか
MySQL / PostgreSQL は今回の採点環境では起動していないので、実接続はせず DSN 文字列を出力するだけ にしている。実際にコンテナを立てて接続したい場合は、リポジトリ直下の docker/README.md を参照。
🧪 ブラウザで試す
スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。
PHP ランタイム未読込
演習問題(1問)
サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。
完了にすると進捗に反映されます