【发布时间】:2012-01-27 11:50:51
【问题描述】:
是否可以在 DBI 允许 @bind_values 的情况下使用命名占位符?例如,我想发表如下声明:
my $s = $DB->selectcol_arrayref ("SELECT a FROM b
WHERE c = ? OR d = ? OR e = ?;",
{},
$par1, $par2, $par1) or
die ($DB->errstr ());
不容易出错。我正在使用 DBD::Pg 和 DBD::SQLite。
【问题讨论】:
-
占位符支持(以及支持的占位符类型)取决于驱动程序,因此我添加了更多标签。
-
有什么理由认为你不能? DBI 说
$ary_ref = $dbh->selectcol_arrayref($statement, \%attr, @bind_values)。请注意,您可以将undef传递给第二个参数,而不是创建一个空哈希。 -
@ikegami:也许您可以解释如何在任何 DBI 方法的
@bind_values参数中使用 named 占位符。如果您使用的是prepare/bind_param/execute,这很容易,但如果没有大量明确的bind_param调用,我从来没有想过如何做到这一点。
标签: perl sqlite postgresql dbi