搜索包含多个字

时间:2016-12-20 09:57:17

标签: php search mysqli

我有一张表格

<form action="buscar.php" method="GET">
  <input type="text" name="q" />
</form>

我的页面显示结果

<?php
 require_once 'meekrodb.php';
 $q = $_GET['q'];
 $results = DB::query("SELECT * FROM product_description WHERE description like '%$q%'");
 foreach ($results as $row) {
  echo $row['name']."<br>";
 }
?>

例如,我在description中有这些短语:

My car is big and green
My house is small and green

当我查找green时,会显示出2个结果,但如果我找到green house则没有任何结果。

问题在于我必须搜索连续文本,例如...... My house is small...

如何改进此查询?谢谢

1 个答案:

答案 0 :(得分:0)

尝试爆炸GET变量。或者您可以尝试使用CONCAT

<强>爆炸

$q = $_GET['q'];
$word_array = explode(" ",$q);
$sqlnames="SELECT * FROM product_description WHERE";
$count = 0;
foreach($word_array as $value){
if($count == 0){
    $sqlnames .= " description LIKE '" . $value ."'";
}
else{
    $sqlnames .= " OR description LIKE '" . $value ."'";
}
$count = 1;
$sqlnames .= " OR description LIKE '" . $value ."'";    
}
$sqlnames .="LIMIT 20";

<强> CONCAT

(类似的东西)

$results = DB::query("SELECT * FROM product_description WHERE description LIKE '%$q%' OR description LIKE '%$q%' OR CONCAT(description, ' ', description ) LIKE '%$q%' LIMIT 20");

我没有测试过这个,但你可以试试。