タイトルの言い方が思いつかなかったので、申し訳ありませんが、基本的には自分のサイトに検索機能があり、入力したクエリが1番目、2番目、1番目、 2番目、またははそれらのファーストネームとセカンドネーム、ファーストネーム、またはセカンドネームです。(それは私がタイプするのを混乱させました)
コード:
$query = mysql_real_escape_string(htmlentities(strip_tags(stripslashes(@$_GET['q']))));
$searchArray = explode(" ", $query);
$query = trim($query);
if($query == "" || $searchArray == "") {
echo("<div id='result'><p>Please enter a search term</p></div>");
}
if (!isset($query) || !isset($searchArray)){
echo("<div id='result'><p>Please enter a search term</p></div>");
}
if (count($searchArray) > 1) {
$sq = mysql_query("
SELECT * FROM users WHERE fname LIKE '%{$searchArray[0]}%'
OR fname LIKE '%{$searchArray[1]}%'
OR sname LIKE '%{$searchArray[0]}%'
OR sname LIKE '%{$searchArray[1]}%'
OR fname LIKE '%{$searchArray[0]}%' AND sname LIKE '%{$searchArray[1]}%'
OR fname LIKE '%{$searchArray[1]}%' AND sname LIKE '%{$searchArray[0]}%'
OR fname = '%{$searchArray[0]}%' AND sname = '%{$searchArray[1]}%'
OR fname = '%{$searchArray[1]}%' AND sname = '%{$searchArray[0]}%'
");
}
else{
$sql = "SELECT * FROM users WHERE fname AND sname LIKE '%$query%' OR email LIKE '%$query%'";
}
私のデータベースには、次のユーザーがいます。Declan SmithJosephBrailsfordテストユーザーテストユーザー2
電子メールを検索すると、正しい結果が得られます。Dec、Declan、またはSmithを検索すると、正しい結果が得られます。Test、Test User、またはUserを検索しても、結果が得られません。Joseph、Brailsford、またはJoseph Brailsfordを検索しても、結果は得られません。Declan Smithを検索すると、結果としてJosephBrailsfordが表示されます。
明らかに、それはまったく正しくないので、誰かが私が間違ったことを教えてもらえますか?:/