php マニュアル

version PHP 4.1.0 - PHP 5.x.x (newer)

PHP   Pear   MySQL  

pg_query_params

(PHP 5 >= 5.1.0)

pg_query_params SQL コマンドとパラメータを分割してサーバーにを送信し、その結果を待つ

説明

resource pg_query_params ([ resource $connection ], string $query , array $params )

コマンドをサーバーに送信し、その結果を待ちます。パラメータを 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 コマンドしか実行できません(クエリ文字列にセミコロンを含めることは 可能です。しかしそれ以降にコマンドを続けることはできません)。

パラメータ

connection

PostgreSQL データベース接続リソース。connection が指定されていない場合はデフォルトの接続が使用されます。 デフォルトの接続は、直近の pg_connect() あるいは pg_pconnect() によって作成されたものです。

query

パラメータ化した SQL 文。ひとつの文のみである必要があります (複数の文をセミコロンで区切る形式は使用できません)。パラメータを 使用する際は $1、$2 などの形式で参照されます。

ユーザーから受け取った値は常にパラメータとして渡すべきです。 直接クエリ文字列に組み込んではいけません。そうしてしまうと、 SQL インジェクション 攻撃を受けてしまう可能性があります。また、クォート文字を含むデータの処理でバグの原因になります。 何らかの理由でパラメータが使えない場合は、値を 適切にエスケープするようにしましょう。

params

プリペアドステートメント中の $1、$2 などのプレースホルダを 置き換えるパラメータの配列。配列の要素数はプレースホルダの 数と一致する必要があります。

bytea フィールド用の値は、パラメータとして指定できません。 pg_escape_bytea() を使うか、ラージオブジェクト関数を使うようにしましょう。

返り値

成功した場合にクエリ結果リソース、失敗した場合に FALSE を返します。

例1 pg_query_params() の使用法

<?php
// "mary"という名前のデータベースに接続
$dbconn pg_connect("dbname=mary");

// Joe's Widgets という名前の店を探す。"Joe's Widgets" を
// エスケープする必要がないことに注意
$result pg_query_params($dbconn'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));

// pg_query を使用した場合と比較
$str pg_escape_string("Joe's Widgets");
$result pg_query($dbconn"SELECT * FROM shops WHERE name = '{$str}'");

?>

参考


 
 

Add Comment

※半角英数

Add Comment  (注) 修正するときは、以前入力したKeyを入力してください。(単純なキーの場合、上書きされてしまいます)

 
 

Comment

コメントはまだ登録されていません。一番乗りで関数の利用方法を書いてみませんか?

 
 
 
 
New Entry

php/function.preg-match.html

先頭3桁が070、080、090のいずれかで始まる電話番号にマッチするパターン

Show Detail

php/function.mb-strimwidth.html

文字コードを指定して、全角半角が混在している文字列を短縮。

Show Detail

mysql/index.html

H7EnFK dvyozfiiutul, [url=http://mcfonuzjslbq.com/]mcfonuzjslbq[/url], [link=http://rosbokkudfzh.com/]rosbokkudfzh[/link], http://stjnnhsdhiyo.com/

Show Detail

: JAPANESE/index.html

Замечательно, это весьма ценное сообщение Очень любопытно :) _________________________________________________________________________ http://trustavia.ru/communication/forum/user/4652/ http://omax.ru/communication/forum/user/1089/

Show Detail

index.html

はじめてのコメント

Show Detail