2017-07-04 125 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; 

希望它有帮助!