1

对于我在 PostgreSQL 上的 UPDATE 语句(来自 Perl 通过DBIand DBD::Pg),我想绑定一个像这样的值:

my $sql = 'UPDATE mytable SET foo = % WHERE id = 42';
my $foo_value = 23;
$dbh->do($sql, {}, $foo_value);

这在该行中给出以下错误do()

DBD::Pg::db do failed: called with 1 bind variable when 0 are needed at...

我尝试了占位符的其他语法,$1并且?. 两者都失败了

DBD::Pg::db do failed: ERROR:  invalid input syntax for type numeric: "" at...

什么是正确的语法?

4

1 回答 1

4

?字符是正确的占位符。

my $sql = 'UPDATE mytable SET foo = ? WHERE id = 42';
my $foo_value = 23;
$dbh->do($sql, undef, $foo_value);
于 2012-07-31T13:41:17.077 回答