我在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查询。

最佳答案

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

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

没有重复的SET

关于perl - 为什么SQLite提示我准备好的语句的语法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1587258/

10-09 00:27