0

我无法让 sqlite3 中的准备好的语句正常工作。我正在使用 Perl 和 Perl DBD 框架。下面是我使用的代码:

#This is a function I have defined
sub query($@){
    my $st = $db->prepare(shift);
    $st->execute(@_);
}

#And it is used like so
query("UPDATE rooms SET name = ?, SET capacity = ? WHERE id = ?", 
    $name, $capacity, $id);

当我尝试这样做时,我收到以下错误:

DBD::SQLite::db 准备失败:靠近“SET”:dbdimp.c 行的语法错误(1)
271 在 database.pm 第 80 行。

为什么我会收到这个错误?如果我在不使用准备好的语句的情况下尝试它,它会起作用。我的应用程序中的所有其他准备好的语句都有效,除了 UPDATE 查询。

4

1 回答 1

11

您的查询,使用标准(和 sqlite)的UPDATE语法是

UPDATE rooms SET name = ?, capacity = ? WHERE id = ?

没有重复的 SET

于 2009-10-19T07:07:02.733 回答