2016-04-14 22 views
1

你好堆垛MySQL查詢具體在這種規則

我有另外一個問題,這個時候關於棄用MySQL的。我有以下查詢

mysql_query("SELECT * FROM cms_notificaties WHERE username = '". $user['id'] ."' AND userstatus = 'unseen' OR userstatus = 'priority' ")or die(mysql_error()); 

即使WHERE用戶名值不正確,這將選擇所有通知。但是,我希望僅請求具有正確的user id的通知,但是,只有具有userstatus unseen優先級的通知纔會被請求。我怎樣才能做到這一點?這甚至可能與MySQL?

一個小小的說明,我知道MySQL已被棄用,但我需要更改整個CMS,以後我會做。

+0

'MySQL已棄用'...哦,我還不知道。爲什麼? :) – Farside

回答

1

OR的條件下使用括號。

SELECT * FROM cms_notificaties WHERE username = '". $user['id'] ."' AND (userstatus = 'unseen' OR userstatus = 'priority') 
2

看看this link它說OR具有比AND更低的運算符優先級。所以你需要使用括號,如下所示:

SELECT * FROM cms_notificaties WHERE username = '". $user['id'] ."' AND (userstatus = 'unseen' OR userstatus = 'priority') 
+0

謝謝,我不知道,這確實解決了問題。這在MySQLi中的工作方式是否相似? –