为什么SQLite会抱怨我准备好的语句的语法?

Mar*_*ius 0 sqlite perl syntax-error prepared-statement

我在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);
Run Code Online (Sandbox Code Playgroud)

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

DBD::SQLite::db prepare failed: near "SET": syntax error(1) at dbdimp.c line 
271 at database.pm line 80.

为什么我会收到这个错误?如果我在不使用准备好的语句的情 我的应用程序中的每个其他预准备语句都有效,但UPDATE查询除外.

Vin*_*vic 11

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

UPDATE rooms SET name = ?, capacity = ? WHERE id = ?
Run Code Online (Sandbox Code Playgroud)

没有重复的SET