我想不出一个办法来表达标题,很抱歉,基本上我的网站上有一个搜索功能,它应该从数据库中选择用户,其中输入的查询就像他们的第一个,第二个,第一个和第二个,或者是他们的名字和第二个、名字或第二个名字。(这让我很困惑打字)
编码:
$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 Smith Joseph Brailsford 测试用户 测试用户 2
如果我搜索电子邮件,我会得到正确的结果。如果我搜索 Dec、Declan 或 Smith,我会得到正确的结果。如果我搜索测试、测试用户或用户,我没有得到任何结果。如果我搜索 Joseph、Brailsford 或 Joseph Brailsford,我没有得到任何结果。如果我搜索 Declan Smith,我会得到 Joseph Brailsford 作为结果。
显然,这根本不对,所以有人可以告诉我我做错了什么吗?:/