【发布时间】:2010-12-07 22:03:44
【问题描述】:
我无法让 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 查询。
【问题讨论】:
-
看起来您正在为您的模块使用一个由所有小写字母组成的名称。不要这样做,因为这样的名称是为 pragma 保留的。此外,将模块放在顶级命名空间中无论如何都是不好的做法。您可能最终将您的模块之一命名为
Config.pm。 -
当我遇到这类问题时,我会直接在数据库 shell 中尝试 SQL 语句,看看是语句有问题还是 Perl 有问题。
-
我坐在我面前的这个页面,我仍然无法弄清楚哪里出了问题! sqlite.org/lang_update.html
标签: perl sqlite prepared-statement syntax-error