db2_set_option
(PECL)
db2_set_option -- 接続リソースあるいはステートメントリソースのオプションを設定する
説明
bool
db2_set_option ( resource resource, array options [, int type] )
ステートメントリソースあるいは接続リソースのオプションを設定します。
結果セットリソースのオプションを設定することはできません。
パラメータ
- resource
db2_prepare() が返す有効なステートメントリソースか、
あるいは db2_connect() や
db2_pconnect() が返す有効な接続リソース。
- options
ステートメントあるいは接続のオプションを含む連想配列。
このパラメータは、自動コミットの値を変更したりカーソルの型を
(スクロール可能、あるいは前進のみに) 変更したり、結果セットに表示されるカラム名を
(小文字、大文字、あるいは元のままに) 設定したりする際に使用します。
- autocommit
DB2_AUTOCOMMIT_ON を渡すと、
指定した接続リソースの自動コミットをオンにします。
DB2_AUTOCOMMIT_OFF を渡すと、
指定した接続リソースの自動コミットをオフにします。
- cursor
DB2_FORWARD_ONLY を渡すと、
ステートメントリソースに前進のみのカーソルを指定します。
これはデフォルトのカーソル型であり、
すべてのデータベースサーバでサポートされています。
DB2_SCROLLABLE を渡すと、
ステートメントリソースにスクロール可能なカーソルを指定します。
このカーソルは、順番どおり以外の方法で結果セットの行にアクセス可能です。
しかし、IBM DB2 Universal Database でしかサポートされていません。
- binmode
DB2_BINARY を渡すと、
バイナリデータがそのままの形式で返されるようになります。
これはデフォルトのモードです。php.ini で
ibm_db2.binmode=1 とするのと同じことです。
DB2_CONVERT を渡すと、
バイナリデータを十六進エンコーディングで変換して返します。
これは、php.ini で
ibm_db2.binmode=2 とするのと同じことです。
DB2_PASSTHRU を渡すと、
バイナリデータを NULL に変換するようになります。これは
php.ini で ibm_db2.binmode=3
とするのと同じことです。
- db2_attr_case
DB2_CASE_LOWER を渡すと、
結果セットのカラム名を小文字で返します。
DB2_CASE_UPPER を渡すと、
結果セットのカラム名を大文字で返します。
DB2_CASE_NATURAL を渡すと、
結果セットのカラム名をそのまま何もせずに返します。
- type
この関数に渡すリソースの型を、整数値で指定します。
リソースの型とこの値は必ず一致していなければなりません。
1 は、
接続リソースがこの関数に渡されることを表します。
1 以外の整数を指定すると、
ステートメントリソースがこの関数に渡されることを表します。
次の表は、それぞれのオプションがどのリソース型で使用可能かをまとめたものです。
表 1. リソースとパラメータの対応
キー | 値 | リソースの型 |
---|
| | 接続 | ステートメント | 結果セット |
autocommit | DB2_AUTOCOMMIT_ON | X | - | - |
autocommit | DB2_AUTOCOMMIT_OFF | X | - | - |
cursor | DB2_SCROLLABLE | X | X | - |
cursor | DB2_FORWARD_ONLY | X | X | - |
binmode | DB2_BINARY | X | X | - |
binmode | DB2_CONVERT | X | X | - |
binmode | DB2_PASSTHRU | X | X | - |
db2_attr_case | DB2_CASE_LOWER | X | X | - |
db2_attr_case | DB2_CASE_UPPER | X | X | - |
db2_attr_case | DB2_CASE_NATURAL | X | X | - |
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例 1. 接続リソースにひとつのパラメータを設定する
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('autocommit' => DB2_AUTOCOMMIT_ON);
/* 正しいリソースとオプションの配列、そして型を表す値を指定して関数をコールします */ $result = db2_set_option($conn, $options, 1);
/* すべてのオプションが正しく設定できたかどうかを調べます */ if($result) { echo 'オプションの設定に成功しました'; } else { echo 'オプションが設定できませんでした'; } ?>
|
上の例の出力は以下となります。 |
例 2. 接続リソースに複数のパラメータを設定する
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('autocommit' => DB2_AUTOCOMMIT_OFF, 'binmode' => DB2_PASSTHRU, 'db2_attr_case' => DB2_CASE_UPPER, 'cursor' => DB2_SCROLLABLE);
/* 正しいリソースとオプションの配列、そして型を表す値を指定して関数をコールします */ $result = db2_set_option($conn, $options, 1);
/* すべてのオプションが正しく設定できたかどうかを調べます */ if($result) { echo 'オプションの設定に成功しました'; } else { echo 'オプションが設定できませんでした'; } ?>
|
上の例の出力は以下となります。 |
例 3. 複数のパラメータを間違ったキーで設定する
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('autocommit' => DB2_AUTOCOMMIT_OFF, 'MY_INVALID_KEY' => DB2_PASSTHRU, 'db2_attr_case' => DB2_CASE_UPPER, 'cursor' => DB2_SCROLLABLE);
/* 正しいリソースとオプションの配列、そして型を表す値を指定して関数をコールします */ $result = db2_set_option($conn, $options, 1);
/* すべてのオプションが正しく設定できたかどうかを調べます */ if($result) { echo 'オプションの設定に成功しました'; } else { echo 'オプションが設定できませんでした'; } ?>
|
上の例の出力は以下となります。 |
例 4. 複数のパラメータを間違った値で設定する
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('autocommit' => DB2_AUTOCOMMIT_OFF, 'binmode' => 'INVALID_VALUE', 'db2_attr_case' => DB2_CASE_UPPER, 'cursor' => DB2_SCROLLABLE);
/* 正しいリソースとオプションの配列、そして型を表す値を指定して関数をコールします */ $result = db2_set_option($conn, $options, 1);
/* すべてのオプションが正しく設定できたかどうかを調べます */ if($result) { echo 'オプションの設定に成功しました'; } else { echo 'オプションが設定できませんでした'; } ?>
|
上の例の出力は以下となります。 |
例 5. 複数のパラメータを接続リソースに設定する (間違った型を指定する)
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('autocommit' => DB2_AUTOCOMMIT_OFF, 'binmode' => DB2_PASSTHRU, 'db2_attr_case' => DB2_CASE_UPPER, 'cursor' => DB2_SCROLLABLE);
/* 正しいリソースとオプションの配列、そして間違った型を表す値を指定して関数をコールします */ $result = db2_set_option($conn, $options, 2);
/* すべてのオプションが正しく設定できたかどうかを調べます */ if($result) { echo 'オプションの設定に成功しました'; } else { echo 'オプションが設定できませんでした'; } ?>
|
上の例の出力は以下となります。 |
例 6. 複数のパラメータを間違ったリソースに設定する
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('autocommit' => DB2_AUTOCOMMIT_OFF, 'binmode' => DB2_PASSTHRU, 'db2_attr_case' => DB2_CASE_UPPER, 'cursor' => DB2_SCROLLABLE);
$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE');
/* 間違ったリソース、そして正しいオプションの配列と型を表す値を指定して関数をコールします */ $result = db2_set_option($stmt, $options, 1);
/* すべてのオプションが正しく設定できたかどうかを調べます */ if($result) { echo 'オプションの設定に成功しました'; } else { echo 'オプションが設定できませんでした'; } ?>
|
上の例の出力は以下となります。 |
例 7. すべてひとつにまとめる
<?php /* データベース接続用のパラメータ */ $database = 'SAMPLE'; $hostname = 'localhost'; $port = 50000; $protocol = 'TCPIP'; $username = 'db2inst1'; $password = 'ibmdb2';
/* 接続文字列 */ $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"; $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;"; $conn_string .= "UID=$username;PWD=$password;";
/* 接続リソースを取得します */ $conn = db2_connect($conn_string, '', '');
/* 有効なキーと値を使用して、オプションの連想配列を作成します */ $options = array('db2_attr_case' => DB2_CASE_LOWER, 'cursor' => DB2_SCROLLABLE);
$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE WHERE EMPNO = ? OR EMPNO = ?');
/* 正しいリソースとオプションの配列、そして型を表す値を指定して関数をコールします */ $option_result = db2_set_option($stmt, $options, 2); $result = db2_execute($stmt, array('000130', '000140'));
/* スクロール可能なカーソルのため、1 行目より先に 2 行目を取得します */ print_r(db2_fetch_assoc($stmt, 2)); print '<br /><br />'; print_r(db2_fetch_assoc($stmt, 1));
?>
|
上の例の出力は以下となります。 Array
(
[empno] => 000140
[firstnme] => HEATHER
[midinit] => A
[lastname] => NICHOLLS
[workdept] => C01
[phoneno] => 1793
[hiredate] => 1976-12-15
[job] => ANALYST
[edlevel] => 18
[sex] => F
[birthdate] => 1946-01-19
[salary] => 28420.00
[bonus] => 600.00
[comm] => 2274.00
)
Array
(
[empno] => 000130
[firstnme] => DELORES
[midinit] => M
[lastname] => QUINTANA
[workdept] => C01
[phoneno] => 4578
[hiredate] => 1971-07-28
[job] => ANALYST
[edlevel] => 16
[sex] => F
[birthdate] => 1925-09-15
[salary] => 23800.00
[bonus] => 500.00
[comm] => 1904.00
) |
|