0

MySQL DBに2つのテーブルがあり、テーブル「pages」の列「campaignid」は、テーブル「campaigns」の列「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か????

現時点では、DBを更新、削除、または保存することはできません。これは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 に答える