【发布时间】:2013-10-27 15:40:37
【问题描述】:
我有这个代码:
if($update[$entity_id])
{
my $sql = "UPDATE cache SET date = '?', value = '?' WHERE item_id = ? AND level = ? AND type = ?;";
}
else
{
my $sql = "INSERT INTO cache (date, value, item_id, level, type) VALUES ('?','?',?,?,?);";
}
my $db = $self->{dbh}->prepare(q{$sql}) or die ("unable to prepare");
$db->execute(time2str("%Y-%m-%d %X", time), $stored, $entity_id, 'entity', 'variance');
但是当它想要运行更新时,我得到了这个错误:
DBD::Pg::st 执行失败:在需要 0 时使用 5 个绑定变量调用。
为什么?
【问题讨论】:
-
$stored变量中为文本,可以包含空格,日期中也有空格,所以需要。
-
不,你不需要它。这就是占位符的意义所在。
-
好的,我删除了它们,但仍然是同样的错误......
-
不,要么您没有删除它们,要么您没有收到相同的错误。显示代码。
-
同时从
->execute(q{$sql})中删除 q{}。你认为q{...}会做什么?
标签: database perl postgresql dbd dbd-pg