无法删除记录,创建时重复

时间:2012-05-17 04:37:40

标签: php mysql data-binding

我的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天的情况......任何帮助都会得到极大的赞赏!

1 个答案:

答案 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. "'");