我正在努力创建一个搜索多个单词的搜索。我的第一次尝试没有任何结果,结果如下:
require_once('database_conn.php'); if($_POST){ $explodedSearch = explode (" ", $_POST['quickSearch']); foreach($explodedSearch as $search){ $query = "SELECT * FROM jobseeker WHERE forename like '%$search%' or surname like '%$search%' ORDER BY userID LIMIT 5"; $result = mysql_query($query); } while($userData=mysql_fetch_array($result)){ $forename=$userData['forename']; $surname=$userData['surname']; $profPic=$userData['profilePicture']; $location=$userData['location']; echo "<div class=\"result\"> <img class=\"quickImage\" src=\"" . $profPic. "\" width=\"45\" height=\"45\"/> <p class=\"quickName\">" . $forename . " " . $surname . "</p> <p class=\"quickLocation\"> " . $location . "</p> </div>"; } }
我还尝试了以下方法,这些方法产生了结果,但是正如您可以想象的那样,我输入的每个单词都得到了重复的结果:
if($_POST){ $explodedSearch = explode (" ", $_POST['quickSearch']); foreach($explodedSearch as $search){ $query = "SELECT * FROM jobseeker WHERE forename like '%$search%' or surname like '%$search%' ORDER BY userID LIMIT 5"; $result .= mysql_query($query); while($userData=mysql_fetch_array($result)){ $forename=$userData['forename']; $surname=$userData['surname']; $profPic=$userData['profilePicture']; $location=$userData['location']; echo "<div class=\"result\"> <img class=\"quickImage\" src=\"" . $profPic. "\" width=\"45\" height=\"45\"/> <p class=\"quickName\">" . $forename . " " . $surname . "</p> <p class=\"quickLocation\"> " . $location . "</p> </div>"; } } }
我对如何进行此操作非常迷惑,不胜感激。
编辑:
if($_POST){ $quickSearch = $_POST['quickSearch']; $explodedSearch = explode (" ", trim($quickSearch)); $queryArray = array(); foreach($explodedSearch as $search){ $term = mysql_real_escape_string($search); $queryArray[] = "forename like '%" . $term . "%' surname like '%" . $term . "%'"; } $implodedSearch = implode(' or ', $queryArray); $query="SELECT * FROM jobseeker WHERE ($implodedSearch) ORDER BY userID LIMIT 5"; $result = mysql_query($query); while($userData=mysql_fetch_array($result, MYSQL_ASSOC)){ $forename=$userData['forename']; $surname=$userData['surname']; $profPic=$userData['profilePicture']; $location=$userData['location']; echo "<div class=\"result\"> <img class=\"quickImage\" src=\"" . $profPic. "\" width=\"45\" height=\"45\"/> <p class=\"quickName\">" . $forename . " " . $surname . "</p> <p class=\"quickLocation\"> " . $location . "</p> </div>"; } }
我已经在同一个主题(搜索关键字)上工作了一段时间,这是我的工作方式:
$words = $_POST['keywords']; if(empty($words)){ //redirect somewhere else! } $parts = explode(" ",trim($words)); $clauses=array(); foreach ($parts as $part){ //function_description in my case , replace it with whatever u want in ur table $clauses[]="function_description LIKE '%" . mysql_real_escape_string($part) . "%'"; } $clause=implode(' OR ' ,$clauses); //select your condition and add "AND ($clauses)" . $sql="SELECT * FROM functions WHERE user_name='{$user_name}' AND ($clause) "; $results=mysql_query($sql,$connection); if(!$results){ redirect("errors/error_db.html"); } else if($results){ $rows = array(); <?php while($rows = mysql_fetch_array($results, MYSQL_ASSOC)) { // echo whatever u want ! } ?>
-现在这就是我尝试使用FULLTEXT搜索运行它的样子:但是您应该将表类型设置为“ MyISAM”
<?php $words = mysql_real_escape_string($_POST['function_keywords']); if(empty($words)){ redirect("welcome.php?error=search_empty"); } //if the columns(results)>1/2(columns) => it will return nothing!(use "NATURAL LANGUAGE"="BOOLEAN") $sql="SELECT * FROM functions WHERE MATCH (function_description) AGAINST ('{$words}' IN NATURAL LANGUAGE MODE)"; $results=mysql_query($sql,$connection); if(!$results){ redirect("errors/error_db.html"); } else if($results){ $rows = array(); while($rows = mysql_fetch_array($results, MYSQL_ASSOC)) { // echo } } ?>