pg_send_execute
指定したパラメータでプリペアドステートメントを実行するリクエストを
送信し、その結果を待たない
説明
intbool pg_send_execute(PgSql\Connection $connection
, string $statement_name
, array $params
)
これは pg_send_query_params と似ています。
しかし、実行するコマンドは指定したクエリ文字列で決まるのではなく
事前に準備されたステートメントの名前で決まります。関数のパラメータは
pg_execute と同じように処理されます。
pg_execute と同様に、7.4 より前のバージョンの
PostgreSQL では動作しません。
パラメータ
-
connection
-
PgSql\Connection クラスのインスタンス。
-
statement_name
-
実行するプリペアドステートメントの名前。"" が指定された場合は
無名ステートメントが実行されます。名前は、事前に
pg_prepare・pg_send_prepare
あるいは PREPARE
SQL コマンドで準備されたものである
必要があります。
-
params
-
プリペアドステートメント中の $1、$2 などのプレースホルダを
置き換えるパラメータの配列。配列の要素数はプレースホルダの
数と一致する必要があります。
戻り値
成功した場合に true
、失敗した場合に 0
を返します。
クエリの結果を確認するには pg_get_result を使用します。
例
例1 pg_send_execute の使用法
<?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_prepare
- pg_send_prepare
- pg_execute