db2_prepare

(PECL ibm_db2 >= 1.0.0)

db2_prepare 実行する SQL 文を準備する

説明

db2_prepare(resource $connection, string $statement, array $options = ?): resource

db2_prepare() は、プリペアドステートメントを作成します。 このプリペアドステートメントには、入力パラメータ・出力パラメータ あるいは入出力パラメータを表すパラメータマーカ (?) を含めることができます。プリペアドステートメントにパラメータを渡すには db2_bind_param() を使用します。 入力パラメータの場合についてのみ、db2_execute() に渡す配列で指定することも可能です。

アプリケーション内でプリペアドステートメントを使用する利点は、 以下の 3 つです。

  • パフォーマンス: 事前に文を準備しておくと、 その文によってデータを取得するための実行計画をデータベースサーバーが 最適化します。その後 db2_execute() でプリペアドステートメントを実行する際にはこの実行計画が再利用され、 実行時に実行計画を毎回作成することによるオーバーヘッドを避けられます。

  • セキュリティ: 事前に文を準備する際に、 入力値にパラメータマーカを含めることができます。 入力値にプレースホルダを使用してプリペアドステートメントを実行すると、 入力値の型がカラム定義あるいはパラメータ定義と一致することを データベースサーバーがチェックします。

  • 高機能: パラメータマーカの機能は、 単に入力値をプリペアドステートメントに渡すだけではありません。 db2_bind_param() を使用すると、 ストアドプロシージャの OUT パラメータおよび INOUT パラメータから 値を取得することも可能です。

パラメータ

connection

db2_connect() あるいは db2_pconnect() が返した有効なデータベース接続リソース。

statement

ひとつ以上のパラメータマーカを含む SQL 文。

options

文のオプションを含む連想配列。 データベースサーバーがその機能をサポートしている場合に、 このパラメータを使用してスクロール可能なカーソルの使用を 要求することができます。

オプションについての説明は db2_set_option() を参照ください。

戻り値

SQL 文のパースに成功し、データベースサーバー内で正しく準備された場合に ステートメントリソースを返します。データベースサーバーがエラーを返した場合に false を返します。返されたエラーの詳細を調べるには、 db2_stmt_error() あるいは db2_stmt_errormsg() をコールします。

例1 パラメータマーカを使用した 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);
    }
}
?>

参考

関連キーワード:  パラメータ, 実行, 準備, プリペアドステートメント, 入力, データベース, マーカ, , サーバー, stmt