我正在使用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();
答案 0 :(得分:5)
It is supported,但气馁:
最终的占位符类型是“命名参数”,格式为“:foo”。虽然DBD :: Pg支持这种语法,但不鼓励使用它来支持美元符号数字。
不能在语句中混合使用不同类型的占位符,但您可以为每个语句句柄使用不同的占位符。这充其量是令人困惑的,所以坚持你的程序中的一种风格。
答案 1 :(得分:-1)
Postgres驱动程序位于模块DBD::Pg中(离线文档:perldoc DBD::Pg
)。