2015-10-18 250 views
0

我使用Wordpress並通過PHP使用AJAX從MYSQL數據庫中刪除帖子。MySQL查詢失敗導致副作用?

This works great。

我的網站上的用戶可以「收藏」帖子,這會呈現一個列表,向他們展示他們喜歡的內容(基本上是一個單獨的表,它們將用戶ID與帖子ID進行交叉引用)。

現在的問題是,當一篇文章被刪除時,我還需要刪除其他表中的任何「偏好」引用。

我通過運行下面的查詢刪除後日常工作的一部分這樣做:

$wpdb->query("DELETE FROM favourite_posts WHERE post_id = ".$_REQUEST['id']); 

這工作完全,但如果添加了錯誤檢查:

$wpdb->query("DELETE FROM favourite_posts WHERE post_id = ".$_REQUEST['id']) or die(mysql_error()); 

和郵政是不是在收藏夾表中,整個例程顯然失敗。

所以我的問題是這樣的......

將在運行第一個查詢(沒有錯誤檢查),會導致問題/服務器過載等,當這個程序上的帖子不也存在於favourite_posts表運行?或者MYSQL忽略失敗的請求並照常進行?

或者是這種不好的做法,我應該檢查,如果帖子存在於favourite_posts之前嘗試刪除它?顯然這意味着更多的查詢,我希望避免。

+2

你也意識到你對注入攻擊很開放吧? – Daedalus

+1

找不到要刪除的匹配行的'DELETE'語句將不會拋出錯誤!這很好,因爲它是合乎邏輯的。只有在sql語句中出現語法錯誤時纔會出現錯誤(請參閱上面的SQL注入漏洞),或者刪除操作會違反外鍵等一些約束條件。 – arkascha

+0

@arkascha謝謝你,這就是我所希望的;) – Grant

回答

0

它不是一個失敗的請求,它是一個不影響行的查詢,因爲沒有匹配WHERE條件。根本不是問題。