2.
PDOの基本
PDOの基本
PDOとは
PDO(PHP Data Object) は、PHP 5.1.0以降で利用できるデータベースを操作できるクラスライブラリです。複数のRDBMS
(MySQL、PostgreSQL、SQLiteなど)に対応したAPIを提供しているため、同じプログラムでも複数のデータベースに対応できます。

CRUDに対応したAPI
PDOにはCRUD処理するためのメソッドやオブジェクトが用意されており、一貫性のあるプログラムができます。
フレームワークでも採用され高速
PDOは比較的高速に動作し、Laravel
などのPHPフレームワークなどでも採用されています。特別な理由がなければ PDO
の利用をお勧めします。
PDO詳細マニュアル
データベース接続設定
設定ファイルの作成
env.php
を作成し、DBの種類、データベース名、ホスト名などを設定します。
env.php
PDO接続用設定一覧
項目名 | 内容例 | 説明 |
---|---|---|
DB接続方式 | 'mysql' | PDOで使用するデータベースドライバ名 |
ホスト名 | 'localhost' または '127.0.0.1' | 自分のPCで動かす場合のホスト設定 |
ポート番号 | '3306' | MySQLのデフォルトポート番号 |
ユーザ名 | 'root' | データベースに接続するユーザー名 |
パスワード | 設定による | MySQL Rootパスワード |
パスワード
パスワードはMySQLをインストールした方法によって違います。
種類 | パスワード |
---|---|
通常インストール | MySQLインストール時に設定 |
XAMPP(Windows) | '' |
MAMP(Mac) | root |
Homebrew(Mac) | '' |
本番運用の注意
root
ユーザでの操作は本番公開するときはとても危険です。 別途ユーザ、パスワードをつけるようにしましょう。今回は開発環境で簡易的に説明するために、デフォルトパスワードで進めていきます。
データベース名
Webアプリで利用するデータベース名を指定します。
PDOの利用方法
PDOオブジェクト
DSN情報
、ユーザ名
、パスワード
を指定し、PDO接続します。戻り値は PDOオブジェクト
が返されます。
DSN
DSN(Data Source Name)
は、PDOでデータベースに接続するプロトコルです。MySQLの場合、mysql:
ではじめて各パラメータを記述します。
文字コード
文字コードは文字化け対策として UTF-8 Unicode
で設定します。
DB接続
DB設定「env.php」を読み込んで、「connect_test.php」でPDO接続してみましょう。
ファイル構成
データベース作成
MySQLクライアントツールを利用して「php_sns」データベースを作成します。

DB接続設定
DB設定ファイル作成
「env.php」にDB設定を定数定義します。
- ホスト、ユーザー名、パスワード、データベース名などは各環境にあわせます
- 設定ファイルを作成しておくと、環境が変わったときに変更しやすくなります。
DB設定読み込み
DB設定ファイルを読み込み変数に代入します。
connect_test.php
DSN設定
DSNの設定を変数 $dsn
で定義します。
PDO接続
try & catch構文
で例外処理(Exception)に対応した、PDO接続処理をします。
connect_test.php
接続テストプログラム
DB設定やPDO接続結果を表示します。
connect_test.php
接続確認
connect_test.php
にアクセスして確認してみましょう。
接続成功の場合

接続失敗の場合
接続が失敗すると以下のようなエラーになります。
結果
「接続失敗」と表示される場合は、以下を確かめてみましょう。
- MySQLサーバが起動しているか
- データベース名、ホストがあっているか
- ユーザ名、パスワードがあっているか
クラスモジュール化
PDO処理のクラス化する意味
WebアプリではDB接続処理は何度も利用されるため、クラスモジュール化して使いやすいようにします。
理由 | 説明 |
---|---|
🧹 重複コード削減 | 毎回 new PDO() せずに処理を集約 |
♻️ 再利用性 | アプリ内でどこでも同じ接続ロジック(DRY原則) |
🧯 エラー処理の一元化 | try/catch を毎回書かなくてよい |
🛡️ セキュリティ | SQLインジェクション対策がしやすい |
🔧 設定切替 | 本番/開発環境でDB接続先を簡単に切り替えられる |
🧪 テストしやすくなる | モックやスタブを使ってテストできる構造にしやすい |
🚀 パフォーマンスの向上 | シングルトン化で無駄なDB接続防止 |
☠️ クラス化しないと…
DB接続処理をいろんなファイルに書くと、以下のような長いコードを毎回記述しないといけません。
- コピペ地獄
- 設定変更が面倒
- バグが増える&修正しにくい
✅ クラスモジュール化すると…
DB接続処理をクラスモジュール化すると、短いコードで効率的にバグを減らせます。
- どこでも同じ方法で接続できる
- 接続ミスが起きにくい
- 管理・テストもラク
クラスファイル作成
ファイル構成
lib
フォルダに Database
クラスを作成します。

スタティック変数
PDOクラスにスタティック変数 pdo
を設定します。この pdo
を外部から使いまわせるようにします。
Database.php
シングルトンパターン
シングルトン(Singleton)
は、アプリケーション内で1つのインスタンスしか存在しないようにするデザインパターンです。同じオブジェクトを何度呼び出しても同じインスタンスが返るのが特徴です。
pdo のシングルトン
DB接続オブジェクトの pdo
をシングルトンするプログラムを実装します。
Database.php
PDO接続
DB設定とクラスモジュールを読み込み、DB接続をします。
connect_test_for_module.php
接続テストプログラム
DB設定やPDO接続結果を表示します。
connect_test_for_module.php
接続確認
connect_test_for_module.php
にアクセスして確認してみましょう。
