2015-10-31 34 views
0

我嘗試執行以下操作,我在這裏丟失了什麼?MySQL聲明使用WHERE AND OR

DELETE FROM escrow WHERE host = '$name' OR challenger = '$name' AND id='$match_id' 
+0

告訴我們發生了什麼事情,預計會是一個很好的開始。我們不知道查詢是否運行,但沒有達到預期結果,或者附近的小貓是否着火。 – ESG

回答

1

當您在任何編程語言ALWAYS使用括號在任何情況下使用ANDOR在一起。有它獲取第一個(在ANDOR條件)來評估一個隱含的訂單,但你平時不知道的順序,不應該在需要看它在手動

還可以使用Prepared statements的SQL查詢這取決於變量。

你的情況,你要麼寫

... WHERE (host = ? OR challenger = ?) AND id = ? 

... WHERE host = ? OR (challenger = ? AND id = ?) 

取決於你想要什麼樣的條件。

另外,當SQL查詢因任何原因失敗時,檢查從數據庫中獲得的錯誤消息。它會告訴你這個查詢有什麼問題。但是,返回無行的有效查詢(因爲WHERE條件不匹配任何行)仍然是有效的查詢而不是錯誤,結果只是空的。