2017-07-04 131 views
0

好的,所以當用戶在搜索輸入中鍵入他們的搜索短語時,我希望它匹配輸入的確切短語或關鍵詞。 即 因此,一個帖子的標題是「搜索數據庫」用短語或單獨的關鍵詞搜索mysql數據庫

$searchVal = "Search database"; 
WHERE post_title LIKE '%" . $searchVal . "%' 

上面的代碼沒有找到匹配的標題有「」之間的搜索數據庫。

我怎麼能得到它匹配。 我想,也許使用爆炸但是我得到一個錯誤:

$sVals = explode(" ", $searchVal); 
foreach ($sVals as $s) { 
    $querySearchVals .= "OR post_title LIKE '%" . $s . "%'"; 
} 

希望是有道理的。 乾杯

回答

1

也許這可以幫助

$search_key = $_POST['searchkey']; //take the search text from the post method 
$search_words = array(); 
$search_words = explode(" ",$search_key); 
$q_string = ""; 
$last_index = intval(count($search_Words)) - 1; 
for($i = 0; $i<count($search_Words);$i++) 
{ 
$q_string = $q_string . " post_title LIKE '%$search_words[$i]%' "; 
if($i != $last_index) 
    $q_string = $q_string . " OR "; 
} 

,並使其更加準確,你可以跳過如A,中,一個等物品

+0

這是解決問題的更好方法,但該查詢也將後修訂作爲結果提取。所以它顯示帖子標題多次 –

+0

要停止它拉動修訂看到這篇文章https://stackoverflow.com/questions/44897729/wordpress-query-for-posts-is-pulling-up-revisions-as-results/44898319 #44898319 –

0

您可能要在這兩者之間插入%並用1 where子句執行。像下面的東西應該工作。

$searchVal = "Search database"; 
$querySearchVals = "post_title LIKE '%"; 
$sVals = explode(" ", $searchVal); 
foreach ($sVals as $s) { 
    $querySearchVals .= $s."%"; 
} 
$querySearchVals .= "'"; 
echo $querySearchVals; 

希望它有幫助!