pg_execute
指定したパラメータを用いてプリペアドステートメントを実行するリクエストを
送信し、その結果を待つ
説明
PgSql\Resultfalse pg_execute(PgSql\Connection $connection
= ?, string $stmtname
, array $params
)
pg_execute は pg_query_params
と似ています。しかし、実行するコマンドはクエリを指定することで
決まるのではなく、事前に準備されたステートメントに値を指定する
ことによって決まります。この機能のおかげで、繰り返し使用される
コマンドに構文解析や実行計画作成が最初の一度だけで済みます。
実行するステートメントは、カレントのセッションで事前に準備しておく
必要があります。pg_execute は、PostgreSQL 7.4
以降のバージョンの接続にのみ対応しています。それ以前のバージョンでは
失敗します。
パラメータは pg_query_params と同じですが、
クエリ文字列のかわりにプリペアドステートメントの名前を指定する
という点だけが違います。
パラメータ
-
connection
-
PgSql\Connection クラスのインスタンス。
connection
が指定されない場合は、デフォルトの接続を使います。
デフォルトの接続とは、pg_connect または pg_pconnect によって確立された直近の接続です。
警告PHP 8.1.0 以降では、デフォルトの接続を使うことは推奨されなくなりました。
-
stmtname
-
実行するプリペアドステートメントの名前。"" が指定された場合は
無名ステートメントが実行されます。名前は、事前に
pg_prepare・pg_send_prepare
あるいは PREPARE
SQL コマンドで準備されたものである
必要があります。
-
params
-
プリペアドステートメント中の $1、$2 などのプレースホルダを
置き換えるパラメータの配列。配列の要素数はプレースホルダの
数と一致する必要があります。
警告
この関数をコールする際に、要素の内容は文字列に変換されます。
戻り値
成功した場合に
PgSql\Result
クラスのインスタンスを返します。
失敗した場合に false
を返します.
例
例1 pg_execute の使用法
<?php
// "mary"という名前のデータベースに接続
$dbconn = pg_connect("dbname=mary");
// 実行するクエリを準備
$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
// プリペアドクエリの実行。文字列 "Joe's Widgets" のエスケープ処理は
// 一切必要ないことに注意
$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));
// 同じプリペアドクエリを違うパラメータで実行
$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
?>
参考
- pg_prepare
- pg_send_prepare
- pg_query_params