通过短语或单独的关键词搜索mysql数据库

时间:2017-07-04 04:27:18

标签: php mysql database

好的,当用户在搜索输入中键入他们的搜索短语时,我希望它与输入的确切短语或关键词匹配。 即 所以帖子的标题是“搜索数据库”

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

上面的代码找不到匹配项,因为标题在搜索数据库之间有“the”。

我怎么能让它匹配。 我想可能会爆炸,但我得到一个错误:

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

希望这是有道理的。 干杯

2 个答案:

答案 0 :(得分: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,The,An等文章

答案 1 :(得分:0)

您可能希望在单词之间插入%并使用1 where子句执行。像下面这样的东西应该有效。

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

希望它有所帮助!