pg_send_prepare
指定したパラメータでプリペアドステートメントを作成するリクエストを
送信し、その結果を待たない
説明
intbool pg_send_prepare(PgSql\Connection $connection
, string $statement_name
, string $query
)
これは pg_prepare の非同期バージョンです。
リクエストが受け付けられた場合に true
、そうでない場合に false
を返します。コールが成功した後、実際にプリペアドステートメントが
作成されたかどうかを調べるには pg_get_result
を使用します。関数のパラメータは pg_prepare
と同じように処理されます。pg_prepare と同様、
7.4 より前の PostgreSQL のバージョンでは正しく動作しません。
パラメータ
-
connection
-
PgSql\Connection クラスのインスタンス。
-
statement_name
-
プリペアドステートメントにつける名前。接続内で一意である必要があります。
"" が指定された場合は無名ステートメントが作成され、以前に定義された
無名ステートメントを上書きします。
-
query
-
パラメータ化した SQL 文。ひとつの文のみである必要があります
(複数の文をセミコロンで区切る形式は使用できません)。パラメータを
使用する際は $1、$2 などの形式で参照されます。
戻り値
成功した場合に true
、失敗した場合に 0
を返します。
クエリの結果を確かめるには pg_get_result を使用します。
例
例1 pg_send_prepare の使用法
<?php
$dbconn = pg_connect("dbname=publisher") or die("Could not connect");
// 実行するクエリを準備する
if (!pg_connection_busy($dbconn)) {
pg_send_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
$res1 = pg_get_result($dbconn);
}
// プリペアドクエリを実行する。文字列 "Joe's Widgets" は
// エスケープの必要がないことに注意
if (!pg_connection_busy($dbconn)) {
pg_send_execute($dbconn, "my_query", array("Joe's Widgets"));
$res2 = pg_get_result($dbconn);
}
// 同一プリペアドクエリを別のパラメータで実行する
if (!pg_connection_busy($dbconn)) {
pg_send_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
$res3 = pg_get_result($dbconn);
}
?>
参考
- pg_connect
- pg_pconnect
- pg_execute
- pg_send_execute
- pg_send_query_params