質問: PHPを学習中です。PHPのマニュアルを見ていたのですが、mysqliクラスとPDOクラスというものがあることを知りました。また、他の色々なサイト[1]でPDOが主流であることも知りました。 たしかに、PDOは色々なRDBMSに使えることや、動作が速い、バインド機構が使えるなど使ったときのメリットがありますが、mysqli関数も十分に動作が速く、バインド機構が使えることなどは変わらないと思います。mysqli関数ではなくPDOを推薦する具体的な理由とはどのようなものがあるのでしょうか? よろしくおねがいします。 [1]. 以下にリスト形式で追記させていただきます。 1. PHPとMySQLのUPDATE文でデータ更新(PDO) 2. IT技術者の悩み[PHP] | まろらぼ 3. クエリービルダーとEloquent
回答: mysqli より PDO が推奨される理由としては PHP マニュアルに記載されている以下の記述に尽きるかと思います。 > > PDO は、データアクセスの抽象化レイヤを提供します。 つまり、使用しているデータベースが何であるかにかかわらず、同じ関数を使用してクエリの発行やデータの取得が行えるということです。 > > > データベースによってデータアクセスの方法が異なると、DRY 原則に反して環境に応じて記述方法を変更しなければならず、開発効率が低下します。mysqli ではなく PDO を利用することでこの問題を避けることが出来ます。 要するに、書き方が統一されてた方が間違いが少なくて安全だし、いろんな環境(データベース)でそのまま利用できる方がたくさん使ってもらえる、ということですね。世の中の皆が皆 MySQL を使っているわけでもないですし。 PDO はデータアクセスの抽象化のみでデータベースの抽象化までは行わないため、より抽象化されたフレームワーク等のデータベース抽象化レイヤを利用する方がより効率的で汎用性が高くなるでしょう。 蛇足ですが PDO_SQLSRV 拡張モジュール (Microsoft SQL Server 関数) は Windows 版の PHP でしか利用できないんですね。追記された参考記事で初めて知りました。