2012-03-23 6 views
3

私はPerlスクリプトで作業しています。名前付きパラメータを使用してPostgresデータベースでクエリを実行したいと考えています。名前を使用してPerlでpostgresクエリをバインドするパラメータ

いくつかのドライバでも同様のプレースホルダ許可:名前をと:N(例えば、:1、:2、など)?DBI documentationはそれがないポータブルだと言うに加えて、その使用は、ポータブルではありません

とにかくやりたいと思います。 Postgresのドライバがそれを実装しているかどうかは誰にも分かりますか?代わりに、このようなクエリを実行する

は:

$q = $pg->prepare($query); 
$q->bind_param(1, "value"); 
$q->bind_param(2, "value"); 
$q->execute(); 

私はこのような何かをしたいと思います:

$q = $pg->prepare($query); 
$q->bind_param("parameterX", "value"); 
$q->bind_param("parameterY", "value"); 
$q->execute(); 

乾杯を!

EDIT

(私はコロンが行方不明になった)正しい構文は次のとおりです。

$q = $pg->prepare($query); 
$q->bind_param(":parameterX", "value"); 
$q->bind_param(":parameterY", "value"); 
$q->execute(); 

答えて

4

It is supported、しかし落胆:

が、最終的なプレースホルダの種類が「という名前パラメータ "を":foo "の形式で入力します。この構文はDBD :: Pgでサポートされていますが、その使用はドル記号を優先して推奨されていません。

異なる種類のプレースホルダーは、ステートメント内で混在させることはできませんが、ステートメントハンドルごとに異なるものを使用することができます。これはせいぜい混乱しているので、プログラム内の1つのスタイルに固執してください。

+0

実際に動作します。パラメータ名の前にコロンがありませんでした。 – Andre

+0

@Andre:PostgreSQLには、PostgreSQL配列で作業する際に、 ':'を使用するため、番号付きの '$ n'形式のプレースホルダが推奨されています:http://stackoverflow.com/a/8627741/479863 –

+1

私はこの推薦を理解していますが、 30パラメータのようなものを扱うことになると、私はむしろ名前で呼んで、すぐに何を見ているのか知っています。しかし、リンクをありがとう。 – Andre

-1

PostgresドライバはモジュールDBD::Pg(オフラインドキュメント:perldoc DBD::Pg)にあります。

+2

この「回答」には、「水が濡れている」という記述と同じくらいの情報が含まれています。 – mvp

関連する問題