在我的应用程序中,我正在使用sqlite3,现在我正试图让delete工作。下面的代码对我来说似乎很好,我已经检查了$GueRealID保存了ID,这当然存在于数据库中。
但是,由于查询的执行,我得到了false back,并且帖子没有被删除。
我做错什么了?

public function deleteProducer($producerId) {

    $sql = "DELETE FROM 'producers' WHERE 'producerid' = $producerId";

    $result = $this->m_db->exec($sql);

    return $result;  // <- 0 (fails)
}

数据库结构:
Table: producers
Fields: id(INTEGER PRIMARY KEY), producerid(INT), name(TEXT), address(TEXT), zipcode(INT), town(TEXT), url(TEXT), imgurl(TEXT)

最佳答案

在sql中,单引号用于字符串。
当上下文中的含义清楚时(例如表名),sqlite将接受字符串而不是标识符,但是在WHERE条件下,允许使用字符串,因此'producerid'将被解释为字符串。
对于标识符,请使用双引号:

$sql = 'DELETE FROM "producers" WHERE "producerid" = $producerId';

10-06 14:39