# ODBC and DB2 PDO ドライバ (PDO_ODBC)

## はじめに

PDO_ODBC は PHP Data Objects (PDO) インターフェイスを実装したドライバで、 PHP から ODBC ドライバあるいは IBM DB2 Call Level Interface (DB2 CLI) ライブラリを使用した データベースへのアクセスが可能となります。 PDO_ODBC は、現在 3 種類のデータベースドライバをサポートしています。

ibm-db2

  フリーの DB2 express-C クライアントを使用した、 IBM DB2 Universal Database、Cloudscape および Apache Derby サーバーへのアクセスをサポートします。

unixODBC

  unixODBC ドライバマネージャおよびデータベースごとの ODBC ドライバを使用した、データベースサーバーへのアクセスをサポートします。

generic

  PDO_ODBC が明示的にサポートしていない ODBC ドライバマネージャのためのコンパイルオプションを提供します。

Windows では、php_pdo_odbc.dll を拡張モジュールとして php.ini で有効にする必要があります。 これは Windows ODBC ドライバマネージャに対してリンクされており、 システムの DSN に登録されているあらゆるデータベースに対して PHP から接続することができます。

## インストール手順

UNIX システムでの PDO_ODBC

1. PDO_ODBC は PHP ソースの中に含まれています。 PDO_ODBC 拡張モジュールを静的モジュールあるいは共有モジュールとして コンパイルするには次のような configure コマンドを実行します。

   ibm_db2

         ./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/

     PDO_ODBC を ibm-db2 形式でビルドするには、PDO_ODBC をコンパイルするのと同じマシンに DB2 アプリケーション開発用ヘッダが インストールされていなければなりません。DB2 アプリケーション開発ヘッダは DB2 サーバーのインストールオプションに 含まれており、また IBM developerWorks の » Web サイト からフリーでダウンロードできる DB2 Application Development Client にも含まれています。

     configure コマンドに DB2 ライブラリおよび ヘッダの場所を指定しなかった場合は、PDO_ODBC はデフォルトとして /home/db2inst1/sqllib を使用します。

   unixODBC

         ./configure --with-pdo-odbc=unixODBC,/usr/local

     configure コマンドに unixODBC ライブラリおよび ヘッダの場所を指定しなかった場合は、PDO_ODBC はデフォルトとして /usr/local を使用します。
   generic

         ./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags

## 定義済み定数

このドライバでは以下の定数が定義されて います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は そのドライバを使用している場合にのみ使用されます。 あるドライバ固有の属性を別のドライバで使うと、予期せぬ結果を引き起こします。 もし複数のドライバを使用しているコードを実行している場合、 PDO::getAttribute() で `PDO::ATTR_DRIVER_NAME` 属性を使用することで、使用中のドライバ名を調べることが可能です。

`PDO_ODBC_TYPE` (string)

`PDO::ODBC_ATTR_USE_CURSOR_LIBRARY` (int)
  `Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY` のエイリアス
`PDO::ODBC_SQL_USE_IF_NEEDED` (int)
  `Pdo\Odbc::SQL_USE_IF_NEEDED` のエイリアス
`PDO::ODBC_SQL_USE_DRIVER` (int)
  `Pdo\Odbc::SQL_USE_DRIVER` のエイリアス
`PDO::ODBC_SQL_USE_ODBC` (int)
  `Pdo\Odbc::SQL_USE_ODBC` のエイリアス
`PDO::ODBC_ATTR_ASSUME_UTF8` (bool)
  `Pdo\Odbc::ATTR_ASSUME_UTF8` のエイリアス

## 実行時設定

php.ini の設定により動作が変化します。

PDO_ODBC 設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
pdo_odbc.connection_pooling | "strict" | `INI_ALL` |
pdo_odbc.db2_instance_name | NULL | `INI_SYSTEM` | この非推奨の機能は、きっと 将来 削除 されるでしょう。

INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

`pdo_odbc.connection_pooling` string

  ODBC 接続のプール方法を指定します。`"strict"`、`"relaxed"` あるいは `"off"` (`""` と同じ) のいずれかです。このパラメータは、 プールされている既存の接続との比較をどの程度厳密に行うのかを 接続マネージャに指定します。 `strict` は推奨されているデフォルト設定で、 接続パラメータが完全に一致する場合にのみ既存の接続を使用します。 `relaxed` は、接続パラメータが似ている場合に 既存の接続を使用します。これはキャッシュの再利用率を高めますが、 (例えば) 仮想ホスト間での接続情報がおかしくなってしまう恐れがあります。

  この設定は php.ini ファイルでのみ変更可能で、 その内容はプロセス全体に影響します。同じ ODBC ライブラリを使用している すべてのモジュール、たとえば Unified ODBC 拡張モジュール などが影響を受けます。

  警告

  `relaxed` を共有サーバーで使用してはいけません。 これはセキュリティの問題があるためです。

  ヒント

  どうしても変更する必要がない限り、この設定はデフォルトの `strict` のままにしておきましょう。

`pdo_odbc.db2_instance_name` string

  `db2` 方式で PDO_ODBC をコンパイルした場合、 Linux および UNIX 上で DB2 インスタンスを指定するための環境変数 DB2INSTANCE の値を設定します。これによって PDO_ODBC が DB2 ライブラリの場所を見つけられるようになり、 DB2 データベースへのカタログ接続が可能になります。

  この設定は php.ini ファイルでのみ変更可能で、 その内容はプロセス全体に影響します。同じ ODBC ライブラリを使用している すべてのモジュール、たとえば Unified ODBC 拡張モジュール などが影響を受けます。

  この設定は、Windows 上では何の意味も持ちません。

## 目次

- PDO_ODBC DSN — ODBC あるいは DB2 データベースに接続する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open