db2_prepare
db2_prepare — 実行する SQL 文を準備する
説明
resource db2_prepare ( resource connection, string statement [, array options] )db2_prepare() は、プリペアドステートメントを作成します。 このプリペアドステートメントには、入力パラメータ・出力パラメータ あるいは入出力パラメータを表すパラメータマーカ (?) を含めることができます。プリペアドステートメントにパラメータを渡すには db2_bind_param() を使用します。 入力パラメータの場合についてのみ、db2_execute() に渡す配列で指定することも可能です。
アプリケーション内でプリペアドステートメントを使用する利点は、 以下の 3 つです。 application:
-
パフォーマンス: 事前に文を準備しておくと、
その文によってデータを取得するための実行計画をデータベースサーバが
最適化します。その後 db2_execute()
でプリペアドステートメントを実行する際にはこの実行計画が再利用され、
実行時に実行計画を毎回作成することによるオーバーヘッドを避けられます。
-
セキュリティ: 事前に文を準備する際に、
入力値にパラメータマーカを含めることができます。
入力値にプレースホルダを使用してプリペアドステートメントを実行すると、
入力値の型がカラム定義あるいはパラメータ定義と一致することを
データベースサーバがチェックします。
-
高機能: パラメータマーカの機能は、
単に入力値をプリペアドステートメントに渡すだけではありません。
db2_bind_param() を使用すると、
ストアドプロシージャの OUT パラメータおよび INOUT パラメータから
値を取得することも可能です。
パラメータ
- connection
-
db2_connect() あるいは db2_pconnect()
が返した有効なデータベース接続リソース。
- statement
-
ひとつ以上のパラメータマーカを含む SQL 文。
- options
-
文のオプションを含む連想配列。
データベースサーバがその機能をサポートしている場合に、
このパラメータを使用してスクロール可能なカーソルの使用を
要求することができます。
- cursor
-
DB2_FORWARD_ONLY を渡すと、
この SQL 文で前進のみのカーソルを使用することを要求します。
これはデフォルトのカーソル型であり、すべてのデータベースサーバで
サポートされています。また、スクロール可能なカーソルに比べて
非常に高速になります。
DB2_SCROLLABLE を渡すと、 この SQL 文でスクロール可能なカーソルを使用することを要求します。 このカーソル型を使用すると、データベースサーバから 行の並び順を気にせずにデータを取得できるようになります。 しかし、この型は DB2 サーバでしかサポートされておらず、 前進のみのカーソルに比べて非常に低速です。
返り値
SQL 文のパースに成功し、データベースサーバ内で正しく準備された場合に ステートメントリソースを返します。データベースサーバがエラーを返した場合に FALSE を返します。返されたエラーの詳細を調べるには、 db2_stmt_error() あるいは db2_stmt_errormsg() をコールします。例
例 872. パラメータマーカを使用した SQL 文の準備と実行以下の例では、4 つのパラメータマーカを含む INSERT 文を準備し、 入力値の配列を含む配列を順に処理しながら db2_execute() に値を渡します。
<?php
$animals = array(
array(0, 'cat', 'Pook', 3.2),
array(1, 'dog', 'Peaches', 12.3),
array(2, 'horse', 'Smarty', 350.0),
);
$insert = 'INSERT INTO animals (id, breed, name, weight)
VALUES (?, ?, ?, ?)';
$stmt = db2_prepare($conn, $insert);
if ($stmt) {
foreach ($animals as $animal) {
$result = db2_execute($stmt, $animal);
}
}
?>
参考
db2_bind_param() |
db2_execute() |
db2_stmt_error() |
db2_stmt_errormsg() |
Weblioに収録されているすべての辞書からdb2_prepareを検索する場合は、下記のリンクをクリックしてください。

- db2_prepareのページへのリンク