2012-11-20 75 views
0

我在寫一個搜索查詢,它根據名字和姓氏進行搜索。 查詢是這樣的:在mysql的頂部使用'like'顯示查詢記錄

select fname,lname 
from users 
where fname like fname like '%$name%' or lname like '%$name%'; 

如果用戶在搜索框中輸入姓氏和名字,我有一個「空間」爆炸並查詢是這樣的

select fname,lname 
from users 
where fname like fname like '%$f_name%' or lname like '%$l_name%'; 

在第二個查詢中,如果我輸入約翰托馬斯,它會以約翰或托馬斯的名字或姓氏顯示所有記錄,但實際搜索結果即約翰托馬斯(精確匹配)在結果的下方。如果我有100個結果,它在第60位)。

我該如何修改查詢來完成此操作還是必須以編程方式處理它?即檢查結果數組並匹配複選框的值以顯示它的存在並顯示它的拳頭。

回答

1

嘗試:

SELECT fname, lname FROM users 
WHERE (fname = '$f_name' AND lname = '$l_name') 
OR (fname LIKE '%$f_name%') OR (lname LIKE '%$l_name%'); 

如果您需要訂購然後在ORDER BY lname, fname查詢結束時,取決於您當然需要訂購的內容。

+0

謝謝我現在使用的是相同的。只是我喜歡在'和'部分使用。 :)我正在尋找一些解決方案,在OR查詢應該工作,我應該得到在頂部的精確匹配。但不知道它是否可能。 – KillABug