レシピ
データベース PDO
PDOについて
様々な種類のデータベースへアクセスするための手段としてPHPが標準で用意しているPDO(PHP Data Objects)。今回はこのPDOがどんなものかご紹介します。
この記事のポイント
- PDOでできることが分かる
- PDOを使うメリット/デメリットが分かる
目次
データベースへのアクセスに便利なPDO
今回はPDOについて紹介をしていきます。
次のような方が対象です。
- PDOってどんなもの?なにができるの?
- PDOを使うメリット・デメリットを知りたい
- PDOを使ってデータベースへ接続したい
Note
本記事の「データベース」とはMariaDBやMySQLなどの「リレーショナルデータベース」を指しています。
概要
PDOは「PHP Data Objects」の略で、PHPからデータベースへ簡単にアクセスするための拡張モジュールです。
PHP 5.1以降から標準でバンドルされるようになり、現在主流のバージョンであればほぼ使うことができるようになっています。
PDOを使うメリットは、データベースの「種類」や「バージョン」の違いを意識せずにコードを書けることです。
次のようなデータベースで共通した操作についてはPDOから行うことができます。
- DB接続・解除
- 基本的なSQL(CRUD)
- テーブル操作
- トランザクション
続いて、PDOを使うメリットとデメリットを紹介します。
PDOを使うメリット
データベースのバージョンの違いを吸収できる
プログラミング言語やデータベースは日々改良されているため頻繁にバージョンアップされていきます。
細かい修正のマイナーアップデートなら特に問題にならないことが多いですが、時々メジャーアップデートがあり、用意された関数に変更があったり、そもそもコードの書き方自体が変わることがあります。
その場合、現在動いているシステムについてもコード修正する必要が発生します。
具合的な例でいうと、PHPには元々MySQL関数の拡張モジュールが用意されていました。
そのモジュールでは「mysql_connect関数」「mysql_query関数」という関数が用意されていました。
しかし、次世代のMySQLにアクセスする拡張モジュールとして「MySQLi」が登場し、従来のMySQL拡張モジュールはPHPバージョン5.5で非推奨となり、7.0でついに削除されました。
MySQL拡張モジュールからMySQLi拡張モジュールへの変更で大きな点は、オブジェクトベースになったところです。
変更を最小限にできるよう、オブジェクトを使わない関数のみを使った使用方法もありますが、関数に渡すパラメータの順番に変更があったりするため、「今までのコードをそのまま使い回す」という感覚では難しい点がありました。
このような変更があるとPHPやMySQLのバージョンを更新するごとにコードも更新する必要が生じます。
しかしPDOを使っていれば、PDO側でバージョンの違いを吸収してくれるため、バージョンアップごとにコード修正する手間を省くことができます。
データベースの種類の違いを吸収できる
システムを運用して時間が経つと、サーバーを含めたシステム周りの事情が変化します。
システム的にはOSやソフトウェアの大きなアップデート。
人員的にはシステムをメンテナンス・改修するスタッフ(請負会社)の変更があったり。
そのような中で、PostgreSQLからMySQLへ、軽量なSQLiteへといったデータベース自体の変更が発生することがあります。
データベースを変更する場合は、もちろんデータベースへアクセスするコードは修正しなければなりません。
そういった修正を必要最小限に抑え、工数を抑える部分でもPDOは活躍します。
PDOのデメリット
データベースの機能をフルに扱うことができない
データベースにはたくさんの種類がありますが、それぞれが異なる特徴・機能を持っています。
扱いやすく汎用性の高いMySQLやMariaDB、軽量でリソースを抑えることのできるSQLite、大規模な法人向けに強いOracle。
システムの用途によって最適なデータベースも変わります。
PDOは全てのデータベースが持つ基本的な機能については網羅していますが、逆にそれぞれのデータベースのみでしか使えないような機能を扱うことはできません。
もう少し具体的に、それぞれのデータベースで異なる点を挙げてみます。
- データの「型」の種類や扱い方
- テーブル構造の扱い
- 検索(インデックス関連)
- 細かいSQL
痒いところに手が届かないこともあり万全とまではいきませんが、基本的なSQL(C:登録、R:取得、U:更新、D:削除)はデータベースを跨いでも共通で使用できるため、大体の場合においては問題なく使えます。
以上、PDOについてのご紹介でした。
次からは実際にコードを使ってPDOの操作を行っていきます。
PDOについてより詳しく知りたい方は、php.netの「PDO」をご覧ください。
PDO – php.net
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。