代码之家  ›  专栏  ›  技术社区  ›  Marius

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

  •  0
  • Marius  · 技术社区  · 15 年前

    我很难在sqlite3中得到一个准备好的语句。我正在使用Perl和PerlDBD框架。下面是我使用的代码:

    #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 prepare failed: near "SET": syntax error(1) at dbdimp.c line 
    271 at database.pm line 80.
    

    为什么我会得到那个错误?如果我在不使用准备好的语句的情况下尝试它,它就会工作。除更新查询外,我的应用程序中其他所有准备好的语句都有效。

    1 回复  |  直到 15 年前
        1
  •  11
  •   Vinko Vrsalovic    15 年前

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

    UPDATE rooms SET name = ?, capacity = ? WHERE id = ?
    

    没有重复的集合