【问题标题】:Search for different tables with multiple words用多个词搜索不同的表
【发布时间】:2017-05-05 12:02:36
【问题描述】:

我有一个表格

<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...

如何改进此查询?谢谢

【问题讨论】:

    标签: php search mysqli


    【解决方案1】:

    尝试爆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");
    

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

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多