PHP-DB - 2. PDO
PDO(PHP Data Objects)はPHPからデータベースにアクセスするための手法の1つです。もともとPHPにはデータベースベンダー固有のモジュールが用意されており、MySQLに接続するのであればMySQLiモジュール、SQLite3に接続するのであればSQLite3モジュールのように、データベースに合わせたライブラリを使ってプログラミングできます。ただし、この場合、MySQLにアクセスする場合はMySQLを操作する専用のクラス群を扱う必要があり、SQLite3にアクセスする場合はSQLite3を操作する専用のクラス群を扱う必要があります。
一方、PDOはデータベースへのアクセスを抽象化したもので、接続先のデータベースに依存しないPDOライブラリ固有のクラス群を提供します。これによって接続先のデータベースがMySQL、PostgreSQL、SQLite3などいずれであっても同じクラスやメソッドの呼び出しで処理できます。つまりPDOによってデータベース製品に依存しないプログラミングが可能となります。
データベース固有のPDOドライバ
PDOを使う場合は、PDOインターフェイスを実装したデータベースドライバを有効にしておく必要があります。本講座では以降 SQLite3
を利用して学習を進めます。
Windows環境で開発を進める場合はphp.iniファイルを編集して、PDOのSQLite3のドライバを有効にしておく必要があります。 php.ini
ファイルをテキストエディタで開きます。
;extension=pdo_sqlite
上記のように先頭に ;
が付いている場合はコメントとして無効化されています。以下のように先頭の;
を削除してファイルを保存します。
extension=pdo_sqlite
オブジェクト指向プログラミング
PDOライブラリはオブジェクト指向プログラミングに考え方に従って設計されています。本講座を通じて利用するPDOのクラス群は以下のとおりです。
PDO
クラス- PHPとデータベースとの接続を表現するクラス
- https://www.php.net/manual/ja/class.pdo.php
PDOStatement
クラス- プリペアドステートメント、および結果セット表現するクラス
- https://www.php.net/manual/ja/class.pdostatement.php
PDOException
クラスPDO
とのやりとりで発生する例外クラス- https://www.php.net/manual/ja/class.pdoexception.php
「PDO」という言葉は文脈によって「PDOライブラリ」を指すこともあれば「PDOクラス」を指すこともあります。
まとめ
- PDOはPHPからデータベースにアクセスするためのライブラリ
- PDOを使えばデータベース製品に依存せずに同じクラスやメソッドを使ってSQLを実行できる
- PDOはオブジェクト指向プログラミングに考え方に従って設計されている