perl - 为什么SQLite提示我准备好的语句的语法?

标签 perl sqlite prepared-statement syntax-error

我在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/

相关文章:

perl - 基于第二个数组从数组中删除元素

android - 如何将 Android 数据库与在线 SQL Server 同步?

java - 准备语句到数据库设置变量类型处理

php - MYSQL 和 PHP - 每个 IN 变量返回 1 个结果,即使变量不是唯一的

php - MySQLi 准备好的语句在相同的常规查询成功的情况下失败

Perl & MongoDB 二进制数据

perl - 是什么决定了 Devel::Peek 的 LEN 值

Perl CGI : Error message: <br/>malformed header from script. Bad header=<body>:

android - 父子关系的SQL查询

带有整数参数的Android SQLite查询