在我的应用程序中,我正在使用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';