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