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
) |  
  |