0
我无法使sqlite3中的准备语句正常工作。我正在使用Perl和Perl DBD框架。下面是我的代码使用方法:为什么SQLite会抱怨我准备好的语句的语法?
#This is a function I have defined
sub query([email protected]){
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 prepare failed: near "SET": syntax error(1) at dbdimp.c line 271 at database.pm line 80.
我为什么会得到这个错误?如果我尝试不使用准备好的语句,它就可以工作。除了UPDATE查询之外,我的应用程序中的其他准备好的语句都起作用。
它看起来像您使用的是由所有小写字母为模块的名称。不要这样做,因为这样的名字是为编译指示保留的。此外,无论如何,将你的模块放在顶层命名空间是不好的做法。你最终可能会命名一个模块'Config.pm'。 –
当我遇到这些问题时,我直接在数据库shell中尝试SQL语句,以查看它是否存在与Perl语句或Perl问题有关的问题。 –
我坐在这个页面前面,我仍然无法弄清楚什么是错的! http://www.sqlite.org/lang_update.html – Marius