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

使用名称将参数绑定到Perl中的postgres查询,perl,postgresql,dbi,Perl,Postgresql,Dbi,我正在使用Perl脚本,我想使用命名参数在Postgres数据库中执行查询。报告说这不是便携式的: 除了?之外,有些驱动程序还允许使用诸如:name和:N(例如:1、:2等)之类的占位符,但它们的使用是不可移植的 不管怎样,我还是想那样做。有人知道Postgres驱动程序是否实现了这一点吗 而不是执行如下查询: $q = $pg->prepare($query); $q->bind_param(1, "value"); $q->bind_param(2, "value")

我正在使用Perl脚本,我想使用命名参数在Postgres数据库中执行查询。报告说这不是便携式的:

除了?之外,有些驱动程序还允许使用诸如: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(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();
干杯

编辑

正确的语法如下(我缺少冒号):

,但不鼓励:

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

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


Postgres驱动程序在模块中(脱机文档:
perldoc DBD::Pg
)。

它确实可以工作。我在参数名前缺少冒号。@Andre:Number
$n
-建议使用PostgreSQL样式的占位符,因为在使用PostgreSQL数组时使用了
:我理解这一建议,但在使用类似30个参数时,我宁愿直呼他们的名字,马上知道我在看什么。不过,谢谢你的链接。这个“答案”包含的信息和“水是湿的”一样多