関数・クラス解説
db2_set_option
version:PECL ibm_db2 >= 1.0.0 (公式)接続リソースあるいはステートメントリソースのオプションを設定する
公式リファレンス
書式
db2_set_option ( resource $resource , array $options , int $type ) : bool
説明
ステートメントリソースあるいは接続リソースのオプションを設定します。 結果セットリソースのオプションを設定することはできません。
パラメータ
- 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 を渡すと、 結果セットのカラム名をそのまま何もせずに返します。
- deferred_prepare
- DB2_DEFERRED_PREPARE_ON を渡すと、 指定したステートメントリソースについて遅延プリペアを有効にします。 DB2_DEFERRED_PREPARE_OFF を渡すと、 指定したステートメントリソースについて遅延プリペアを無効にします。
- i5_fetch_only
- DB2_I5_FETCH_ON - カーソルは読み込み専用となり、場所を指定しての更新や削除には使用できません。 これは、SQL_ATTR_FOR_FETCH_ONLY が SQL_FALSE に設定されていない場合のデフォルト設定です。 DB2_I5_FETCH_OFF - カーソルは、場所を指定しての更新や削除に使用できるようになります。
- rowcount
- DB2_ROWCOUNT_PREFETCH_ON - クライアントは、取得する前に全行数を問い合わせることができます。つまり、 ROLLFORWARD_ONLY カーソルを使っている場合でも 選択された行数を db2_num_rows() で取得することができます。 DB2_ROWCOUNT_PREFETCH_OFF - クライアントは、取得する前に全行数を問い合わせることができません。
- trusted_user
- ユーザーを信頼済みユーザーに変更する際に、信頼済みユーザーのユーザー ID (文字列) をこのキーの値として渡します。 このオプションは、接続リソース上でのみ設定可能です。 このオプションを使用するには、 信頼済みコンテキストを接続リソース上で有効にしなければなりません。
- trusted_password
- trusted_user キーで指定したユーザーに対応するパスワード (文字列)。
注意: 各オプションの値を設定する際、 サーバーによっては指定したすべての内容を処理できないことがあります。 その場合、値が切り詰められます。 指定したオプションが正しく変換されてホストシステムに送信されることを確実にするには、 A から Z までの文字と 0 から 9 までの数字、そしてアンダースコア (_) とピリオド (.) のみを使用するようにします。
- userid
- SQL_ATTR_INFO_USERID - ヌル終端の文字列へのポインタで、DB2 接続の際にホストデータベースサーバーに送信する クライアントのユーザー ID として使用します。
注意: z/OS および OS/390 サーバー版の DB2 は 16 文字までの長さをサポートしています。 このユーザー ID を、認証時に使用するユーザー ID と混同しないでください。 これは識別のためだけに使用するものであり、認証には用いられません。
- acctstr
- SQL_ATTR_INFO_ACCTSTR - ヌル終端の文字列へのポインタで、DB2 接続の際にホストデータベースサーバーに送信する クライアントのアカウンティング・ストリングとして使用します。
注意: z/OS および OS/390 サーバー版の DB2 は 200 文字までの長さをサポートしています。
- applname
- SQL_ATTR_INFO_APPLNAME - ヌル終端の文字列へのポインタで、DB2 接続の際にホストデータベースサーバーに送信する クライアントのアプリケーション名として使用します。
注意: z/OS および OS/390 サーバー版の DB2 は 32 文字までの長さをサポートしています。
- wrkstnname
- SQL_ATTR_INFO_WRKSTNNAME - ヌル終端の文字列へのポインタで、DB2 接続の際にホストデータベースサーバーに送信する クライアントのワークステーション名として使用します。
注意: z/OS および OS/390 サーバー版の DB2 は 18 文字までの長さをサポートしています。
- type
- この関数に渡すリソースの型を、整数値で指定します。 リソースの型とこの値は必ず一致していなければなりません。 1 は、 接続リソースがこの関数に渡されることを表します。 1 以外の整数を指定すると、 ステートメントリソースがこの関数に渡されることを表します。
キー | 値 | リソースの型 | ||
---|---|---|---|---|
接続 | ステートメント | 結果セット | ||
autocommit | DB2_AUTOCOMMIT_ON | X | - | - |
autocommit | DB2_AUTOCOMMIT_OFF | X | - | - |
cursor | DB2_SCROLLABLE | - | X | - |
cursor | DB2_FORWARD_ONLY | - | 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 | - |
deferred_prepare | DB2_DEFERRED_PREPARE_ON | - | X | - |
deferred_prepare | DB2_DEFERRED_PREPARE_OFF | - | X | - |
i5_fetch_only | DB2_I5_FETCH_ON | - | X | - |
i5_fetch_only | DB2_I5_FETCH_OFF | - | X | - |
rowcount | DB2_ROWCOUNT_PREFETCH_ON | - | X | - |
rowcount | DB2_ROWCOUNT_PREFETCH_OFF | - | X | - |
trusted_user | <USER NAME> (文字列) | X | - | - |
trusted_password | <PASSWORD> (文字列) | X | - | - |
userid | SQL_ATTR_INFO_USERID | X | X | - |
acctstr | SQL_ATTR_INFO_ACCTSTR | X | X | - |
applname | SQL_ATTR_INFO_APPLNAME | X | X | - |
wrkstnname | SQL_ATTR_INFO_WRKSTNNAME | X | X | - |
返値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
サンプル
例1 接続リソースにひとつのパラメータを設定する
/* データベース接続用のパラメータ */
$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 接続リソースに複数のパラメータを設定する
/* データベース接続用のパラメータ */
$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 複数のパラメータを間違ったキーで設定する
/* データベース接続用のパラメータ */
$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 複数のパラメータを間違った値で設定する
/* データベース接続用のパラメータ */
$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 複数のパラメータを接続リソースに設定する (間違った型を指定する)
/* データベース接続用のパラメータ */
$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 複数のパラメータを間違ったリソースに設定する
/* データベース接続用のパラメータ */
$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 すべてひとつにまとめる
/* データベース接続用のパラメータ */
$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 '
';
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
) 例8 i5/OS カーソルは読み込み専用
$conn = db2_connect("", "", "", array("i5_lib"=>"nobody"));
$stmt = db2_prepare($conn, 'select * from names where first = ?');
$name = "first2";
db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
$options = array("i5_fetch_only"=>DB2_I5_FETCH_ON);
db2_set_option($stmt,$options,0);
if (db2_execute($stmt)) {
while ($row = db2_fetch_array($stmt)) {
echo "{$row[0]} {$row[1]}";
}
}
上の例の出力は以下となります。
first2 last2
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール