0

我的 MySQL DB 中有 2 个表,其中表“pages”中的列“campaignid”引用(=to)表“campaigns.id”中的列“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 天……非常感谢任何帮助!

4

1 回答 1

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' ");
}

我假设您也想从查询中的活动表中获取数据?否则,您不需要将其包含在查询中。

编辑:正如您在删除中使用 id 的评论中所述 - 这应该是您在选择中使用的 pid 吗?另外,在变量周围加上引号(不是必需的,但可以防止 DB 错误是变量为空)

$this->query("DELETE FROM pages WHERE pid = '" . $pageID. "'");
于 2012-05-17T05:03:13.577 回答