2

在我的应用程序中,我使用的是 SQLite3,现在我正试图让 DELETE 工作。下面的代码对我来说似乎很好,并且我检查了 $producerId 是否保存了 ID,它当然存在于数据库中。

但是,由于查询执行,我得到了错误的回复,并且帖子没有被删除。

我究竟做错了什么?

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)
4

1 回答 1

1

在 SQL 中,单引号用于字符串。

当从上下文中明确含义(例如表名)时,SQLite 将接受字符串而不是标识符,但在WHERE条件下,字符串允许的,因此'producerid'将被解释为字符串。

对于标识符,请使用双引号:

$sql = 'DELETE FROM "producers" WHERE "producerid" = $producerId';
于 2012-12-04T14:34:41.920 回答