在我的应用程序中,我正在使用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)
答案 0 :(得分:1)
在SQL中,单引号用于字符串。
当上下文中的含义清楚时(例如表名),SQLite将接受字符串而不是标识符,但在WHERE
条件下,字符串是允许的,所以'producerid'
将被解释为字符串。
对于标识符,请使用双引号:
$sql = 'DELETE FROM "producers" WHERE "producerid" = $producerId';