2011-03-16 40 views
0

我有一個如下所示的mysql表;同時使用「=」和「LIKE」的php mysql查詢

+----+-------------+-------------+-------------+-------------+ 
| Sl | Column1 | Column2 | Column3 | Column4 | 
+----+-------------+-------------+-------------+-------------+ 
| 1 | Data1A | Data2A | Data3A | xxxxxx | 
+----+-------------+-------------+-------------+-------------+ 
| 2 | Data1B | Data2B | Data3B | yyyyyy | 
+----+-------------+-------------+-------------+-------------+ 
| 3 | Data1C | Data2C | Data3C | xxxxxx | 
+----+-------------+-------------+-------------+-------------+ 
| 4 | Data1D | Data2D | Data3D | yyyyyy | 
+----+-------------+-------------+-------------+-------------+ 
| 5 | Data1E | Data2E | Data3E | xxxxxx | 
+----+-------------+-------------+-------------+-------------+ 

我只是想與LIKE語句列1,2和3的查詢,從而將搜索關鍵字這些列類似的數據。另外我想使用第4列中的數據過濾結果,也就是說,我想讓特權過濾掉col4特定的結果,無論是xxxxxx還是yyyyyy。

我犯了一個語法$query = "SELECT * FROM table WHERE Column1 LIKE'%$keyword%' OR Column2 LIKE'%$keyword%' OR Column3 LIKE'%$keyword%' AND Column4 = 'xxxxxx'";

但是這是行不通的,而我的語法$query = "SELECT * FROM table WHERE Column1 LIKE'%$keyword%' AND Column4 = 'xxxxxx'";運作良好。

但我想檢查col2和col3的相似之處。但它會給我結果而不過濾col4。

回答

5

我認爲你需要把你的周圍條件OR像這樣括號...

SELECT * FROM table WHERE 
(Column1 LIKE'%$keyword%' OR Column2 LIKE'%$keyword%' OR Column3 LIKE'%$keyword%') AND Column4 = 'xxxxxx'; 
1

你的解決之道在於分組的脫節(ORS)一起,像這樣:

$query = "SELECT * FROM table WHERE (Column1 LIKE '%$keyword%' OR Column2 LIKE'%$keyword%' OR Column3 LIKE'%$keyword%') AND Column4 = 'xxxxxx'"; 
2

你必須記住比較功能如何。您需要將所有OR條件評估爲一個組,然後將其與最後的AND條件進行匹配。你需要圍繞OR條件使用括號來使它們作爲一個組進行評估。