我的MySQL数据库中有两个表,表格“pages”中的“campaignid”列在“广告系列”表格中引用“=”列“id”。
ALTER TABLE pages ADD FOREIGN KEY (campaignid) REFERENCES campaigns(id);
这些列中的数据由此公共函数调用:
public function get_pages_by_campaign_id($campaignID) {
$campaignID = $this->real_escape_string($campaignID);
return $this->query("SELECT pid, campaignid FROM pages campaigns WHERE campaignid = 'campaigns.id'");
}
但是当我尝试使用以下内容删除“页面”时
public function delete_page($pageID) {
$this->query("DELETE FROM pages WHERE id = " . $pageID);
}
什么都没发生。我应该设置ON DELETE SET NULL | ON UPDATE CASCADE
或类似的东西????
目前我无法更新,删除或保存任何内容到数据库,这已经是2天的情况......任何帮助都会得到极大的赞赏!
答案 0 :(得分:0)
您的语法不正确。您的查询使用campaignid = 'campaigns.id'
但引号表明这是一个变量,当我假设它是您正在寻找的列时。表名之间需要逗号。您也不使用传递给函数的变量。
public function get_pages_by_campaign_id($campaignID) {
$campaignID = $this->real_escape_string($campaignID);
return $this->query("SELECT pid, campaignid FROM pages, campaigns WHERE campaignid= campaigns.id AND campaignid = '$campaignID' ");
}
我假设您也希望从查询中的广告系列表中获取数据?否则,您不需要将其包含在查询中。
编辑:AS在您在删除中使用id的评论中说明 - 应该像您在选择中使用的那样是pid吗?另外,在变量周围加上引号(不必要但是防止DB错误,变量是空的)
$this->query("DELETE FROM pages WHERE pid = '" . $pageID. "'");