PDO_ODBC は PHP Data Objects (PDO) インターフェイスを実装したドライバで、 PHP から ODBC ドライバあるいは IBM DB2 Call Level Interface (DB2 CLI) ライブラリを使用した データベースへのアクセスが可能となります。 PDO_ODBC は、現在 3 種類のデータベースドライバをサポートしています。
フリーの DB2 express-C クライアントを使用した、 IBM DB2 Universal Database、Cloudscape および Apache Derby サーバーへのアクセスをサポートします。
unixODBC ドライバマネージャおよびデータベースごとの ODBC ドライバを使用した、データベースサーバーへのアクセスをサポートします。
PDO_ODBC が明示的にサポートしていない ODBC ドライバマネージャのためのコンパイルオプションを提供します。
Windows では、php_pdo_odbc.dll をエクステンションとして php.ini で有効にする必要があります。 これは Windows ODBC ドライバマネージャに対してリンクされており、 システムの DSN に登録されているあらゆるデータベースに対して PHP から接続することができます。
PDO_ODBC は PHP ソースの中に含まれています。 PDO_ODBC 拡張モジュールを静的モジュールあるいは共有モジュールとして コンパイルするには次のような configure コマンドを実行します。
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
configure コマンドに DB2 ライブラリおよび ヘッダの場所を指定しなかった場合は、PDO_ODBC はデフォルトとして /home/db2inst1/sqllib を使用します。
./configure --with-pdo-odbc=unixODBC,/usr/local
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
このドライバでは以下の定数が定義されて
います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード
されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は
そのドライバを使用している場合にのみ使用されます。
あるドライバ固有の属性を別のドライバで使うと、予期せぬ結果を引き起こします。
もし複数のドライバを使用しているコードを実行している場合、
PDO::getAttribute() で PDO::ATTR_DRIVER_NAME
属性を使用することで、使用中のドライバ名を調べることが可能です。
PDO::ODBC_ATTR_USE_CURSOR_LIBRARY
(int)
このオプションは、ODBC のカーソルライブラリが使うかを制御します。 ODBC カーソルライブラリは、ドライバが実装していない高度なODBCの機能 (例: スクロール可能なブロックカーソル) をいくつかサポートします。 サポートしている値は以下の通りです:
PDO::ODBC_SQL_USE_IF_NEEDED
(デフォルト):
ODBC カーソルライブラリを必要な時に使います。
PDO::ODBC_SQL_USE_DRIVER
:
ODBC カーソルライブラリを使いません。
PDO::ODBC_SQL_USE_ODBC
:
ODBC カーソルライブラリを常に使います。
PDO::ODBC_ATTR_ASSUME_UTF8
(bool)
Windows のみ有効です。
true
の場合、UTF-16 でエンコードされた文字データ(
CHAR
,
VARCHAR
, LONGVARCHAR
) を
データベースから読み取ったり、書き込んだりする際に UTF-8 に変換します。
false
の場合(デフォルト)、
エンコーディングの変換はドライバが行う可能性があります。
php.ini の設定により動作が変化します。
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
pdo_odbc.connection_pooling | "strict" | PHP_INI_ALL | |
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | この非推奨の機能は、きっと 将来 削除 されるでしょう。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
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 上では何の意味も持ちません。