Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: db2_prepare - Manual
[go: Go Back, main page]

PHP  
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  
<db2_pconnectdb2_primary_keys" width="11" height="7"/>
view the version of this page
Last updated: Sun, 07 May 2006

db2_prepare

(PECL)

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() をコールします。

例 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);
   }
}
?>



add a note add a note User Contributed Notes
db2_prepare
ndt.db2 at google mail
13-Aug-2006 10:41
if you have the error message : PHP Warning:  db2_prepare() [<a href='function.db2-prepare'>function.db2-prepare</a>]: Statement Prepare Failed in (....)
and cannot display the error message using db2_stmt_errormsg() , then check if your database connection handle is (still) valid

<db2_pconnectdb2_primary_keys" width="11" height="7"/>
 Last updated: Sun, 07 May 2006
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2006 The PHP Group
All rights reserved.
This mirror generously provided by: PacketBusiness, Inc.
Last updated: Sun Sep 3 15:22:48 2006 JST