使用名称将参数绑定到Perl中的postgres查询

时间:2012-03-23 19:58:47

标签: perl postgresql dbi

我正在使用Perl脚本,我想使用命名参数在Postgres数据库中执行查询。 DBI documentation表示不可移植:

  

除了?之外,一些驱动程序还允许使用占位符:name和: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();

2 个答案:

答案 0 :(得分:5)

It is supported,但气馁:

  

最终的占位符类型是“命名参数”,格式为“:foo”。虽然DBD :: Pg支持这种语法,但不鼓励使用它来支持美元符号数字。

     

不能在语句中混合使用不同类型的占位符,但您可以为每个语句句柄使用不同的占位符。这充其量是令人困惑的,所以坚持你的程序中的一种风格。

答案 1 :(得分:-1)

Postgres驱动程序位于模块DBD::Pg中(离线文档:perldoc DBD::Pg)。