pg_query_params
SQL コマンドとパラメータを分割してサーバーへ送信し、その結果を待つ
&reftitle.description;
PgSql\Resultfalsepg_query_params
PgSql\Connectionconnection
stringquery
arrayparams
コマンドをサーバーに送信し、その結果を待ちます。パラメータを SQL コマンド
とは別に渡すことが可能です。
pg_query_params は pg_query
と似ていますが、追加の機能を有しています。それはパラメータ値が
コマンド文字列と分離しているということです。
pg_query_params は PostgreSQL 7.4 以降の接続でのみ
サポートされます。それ以前のバージョンでは失敗します。
パラメータを使用する際は、query 文字列内で
$1、$2 のように参照されます。
query の中で同じパラメータを何度も使えます。
その場合は、それぞれに同じ値が渡されます。
params で
実際の値を指定します。&null; を指定すると、SQL の NULL
とみなされます。
pg_query に対する pg_query_params
の最大の利点は、パラメータの値を query 文字列から
分離できることです。そのため、退屈でエラーの元となりやすいクォート・
エスケープなどをしなくてもよくなります。pg_query
と異なり、pg_query_params ではひとつの SQL
コマンドしか実行できません(クエリ文字列にセミコロンを含めることは
可能です。しかしそれ以降にコマンドを続けることはできません)。
&reftitle.parameters;
connection
&pgsql.parameter.connection-with-unspecified-default;
query
パラメータ化した SQL 文。ひとつの文のみである必要があります
(複数の文をセミコロンで区切る形式は使用できません)。パラメータを
使用する際は $1、$2 などの形式で参照されます。
ユーザーから受け取った値は常にパラメータとして渡すべきです。
直接クエリ文字列に組み込んではいけません。そうしてしまうと、
SQL インジェクション
攻撃を受けてしまう可能性があります。また、クォート文字を含むデータの処理でバグの原因になります。
何らかの理由でパラメータが使えない場合は、値を
適切にエスケープするようにしましょう。
params
プリペアドステートメント中の $1、$2 などのプレースホルダを
置き換えるパラメータの配列。配列の要素数はプレースホルダの
数と一致する必要があります。
bytea フィールド用の値は、パラメータとして指定できません。
pg_escape_bytea を使うか、ラージオブジェクト関数を使うようにしましょう。
&reftitle.returnvalues;
成功した場合に
PgSql\Result クラスのインスタンスを返します。
&return.falseforfailure;
&reftitle.changelog;
&Version;
&Description;
&pgsql.changelog.return-result-object;
&pgsql.changelog.connection-object;
&reftitle.examples;
pg_query_params の使用法
]]>
&reftitle.seealso;
pg_query