0

名と名前に基づいて検索を行う検索クエリを作成しています。クエリは次のようになります。

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%';

2番目のクエリでJohnThomasと入力すると、名前にJohnまたはThomasが含まれるすべてのレコードが表示されますが、実際の検索結果、つまりJohn Thomas(完全一致)は結果のどこかにあります(100の場合)結果は60番目の位置になります)。

これを達成するためにクエリを変更するにはどうすればよいですか、それともプログラムで処理する必要がありますか?つまり、結果の配列をチェックし、チェックボックスの値と一致してその存在を確認し、最初に表示します。

4

2 に答える 2

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は、もちろん、注文する必要があるものに応じて、クエリの最後に。

于 2012-11-20T03:24:54.110 に答える
1

クエリに追加

ORDER BY `fname`

mysqlの並べ替えをテストできます詳細はこちら==> http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

于 2012-11-20T02:25:36.610 に答える