回答編集履歴

1 説明文を少し変更

koyhoge

koyhoge score 262

2017/02/24 11:14  投稿

## php-oci8 について
OCI8 機能拡張(php-oci8)はOracleのクライアントライブラリを直接呼び出して、Oracle DBに接続するための PHP 関数群を提供するものです。
導入すると oci_ で始まる関数たちが使用できるようになり、それらを用いて Oracle にアクセスします。
[OCI8 の PHPマニュアル](http://php.net/manual/ja/book.oci8.php)
## PDO_OCI について
PDO は、各種の DB アクセスのためにそれぞれ独自の関数を使うのではなく、同じ呼び出し方にしようという発想のもとに開発されたライブラリです。開発者は PDO に DB のタイプを指定するだけで、各 DB アクセス方法の違いは PDO 用のドライバモジュールが吸収してくれます。その PDO 用の Oracle ドライバが PDO_OCI というわけです。
PDO は、各種の DB アクセスのためにそれぞれ独自の関数を使うのではなく、同じ呼び出し方にしようという発想のもとに開発されたライブラリです。開発者は PDO に DB のタイプを指定するだけで同じやり方でアクセスできます。各 DB アクセス方法の違いは PDO 用のドライバモジュールが吸収してくれます。その PDO 用の Oracle ドライバが PDO_OCI というわけです。
[PDO_OCI の PHPマニュアル](http://php.net/manual/ja/ref.pdo-oci.php)
## それぞれの違い
それぞれのモジュールは上記のように意味合いが違いますので、お互いに干渉することなく共存して導入することができます。どちらかの実行のためにもう片方が必要になるということもありません。ただしどちらも Oracle のクライアントライブラリ (SDK) が必要なことは同じです。
php-oci8 と PDO_OCI では PHP からの呼び出し方が全く異なりますので、自分がどちらを使ってプログラムを書きたいのかを考えてから、必要な方を導入すれば良いと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る