2012-05-17 72 views
0

當重複我在我的MySQL數據庫表2中,其中表「活動在表列「CAMPAIGNID」,「網頁」 REFFERENCE(=到)欄「身份證」。無法刪除的記錄,創造

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

我檢查了這個: 'printf(「用戶名:%d」,$ userID); printf(「頁面ID:%d」,$ pageID);}} \t \t \t \t \t \t printf(「Campaign ID:%d」,$ campaignsID); (「Result:%s」,print_r($ page,true)); (「結果:%s」,print_r($ campaigns,true)); \t \t \t \t \t \t $ db = PageDB :: getInstance(); \t \t \t \t \t \t的printf( 「錯誤:%s(%d)」 PHP_EOL,$ DB->錯誤,$ DB->錯誤號);' ,有沒有錯誤... – MrMage

+0

我發現了一個錯誤:'錯誤:'where子句'中的未知列'id'(1054)'但是canot找到源「id」 – MrMage

回答

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. "'"); 
+0

是的,我剛剛發現「id」 - 對不起,整晚都在爲此工作,無法看到樹林和所有那些! – MrMage

+0

這已返回錯誤: '錯誤:您的SQL語法中有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第一行(1064)' – MrMage

+0

@ user1395580'附近使用正確的語法。它不僅僅是一個id - 我也對你的選擇查詢做了3或4次更改確保你也得到了這些!編輯:剛纔看到你的評論 - 這是爲選擇或刪除?我不得不猜測你的數據庫結構,所以列是否正確? – FluffyKitten