2012-03-23 50 views
3

我正在使用Perl腳本,我想使用命名參數在Postgres數據庫中執行查詢。該DBI documentation說,這不便於攜帶:使用名稱在Perl中綁定postgres查詢的參數

有些司機還允許佔位符,如:姓名和:N(如:1,2,依此類推)?除了,但它們的使用是不可移植的

無論如何我都想這樣做。有誰知道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(); 

乾杯!

編輯

正確的語法如下(我是缺少冒號):

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

回答

4

It is supported,但不鼓勵:

最終的佔位符類型「命名參數「格式爲」:foo「。雖然DBD :: Pg支持該語法,但不鼓勵使用它,以支持美元符號數字。

不同類型的佔位符不能在語句中混合,但也可以使用不同的人對每個語句處理你。這充其量是令人困惑的,所以在你的程序中堅持一種風格。

+0

確實有效。我在參數名稱前缺少冒號。 – Andre 2012-03-23 20:26:35

+0

@Andre:編號'$ N'風格的佔位符,建議對PostgreSQL由於使用的':'PostgreSQL的陣列工作時:http://stackoverflow.com/a/8627741/479863 – 2012-03-23 21:50:48

+1

我理解的建議,但當涉及到的東西,如30個參數的工作,我寧願用自己的名字給他們打電話,知道我在看的時候了。儘管如此,感謝您的鏈接。 – Andre 2012-03-23 22:22:24

-1

Postgres驅動程序位於模塊DBD::Pg(脫機文檔:perldoc DBD::Pg)中。

+2

這個「答案」包含儘可能多的信息陳述「水是溼的」 – mvp 2013-09-13 08:03:26

相關問題