首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进我的搜索功能?PHP + MySQL

问如何改进我的搜索功能?PHP + MySQL
EN

Stack Overflow用户
提问于 2017-11-27 12:54:15
回答 1查看 109关注 0票数 1

我是新来的,我开始用PHP编写代码,并使用MySQL。

我想搜索多个“关键字”,例如“英特尔i7 7700k”在表中,我不知道如何做到这一点。

我的MySQL表结构如下所示:

id | brand | family | model | cores | threads等。

1 | Intel | i7 | 7700k | 4 | 8等。

下面的PHP搜索工作,但只对一个词。

代码语言:javascript
复制
if(isset($_GET['search'])){
  $search = $conn->escape_string($_GET['search']);

  $query = $conn->query("
    SELECT brand, family, model
    FROM cpus
    WHERE brand LIKE '%{$search}%'
    OR family LIKE '%{$search}%'
    OR model LIKE '%{$search}%'
  ");

我试图循环排列的单词,但它不起作用。

代码语言:javascript
复制
if(isset($_GET['search'])){
  $search = $conn->escape_string($_GET['search']);
  $words = explode(' ',$search);
  $searchout = foreach ($words as $word){
    "SELECT brand, family, model FROM cpus WHERE brand LIKE '%$word%' OR family LIKE '%$word%' OR model LIKE '%$word%'"
  }
  $query = $conn->query($search_out);

    echo "<div class='result-count'>Found " . $query->num_rows . " results.</div>";

    if($query->num_rows){
      while($r = $query->fetch_object()){

        echo "<div class='result'><a href='#'>" . $r->brand . $r->model . "</a></div>";
      }
    }
}  

怎样才能让搜索在多个单词上工作呢?

比如"Intel i7 7700k" "7700k intel i7" "i7 7700k intel"等等。

以下是我的另一次尝试,但也失败了:

代码语言:javascript
复制
if(isset($_GET['search'])){
  $search = $conn->escape_string($_GET['search']);
  $words = explode(' ',$search);
  $words_count = count($words);
  $cpus_columns = ['brand','family','model'];
  print_r($cpus_columns);
  $mysql_where = "SELECT brand, family, model FROM cpus WHERE ".$cpus_columns[0]." LIKE ".$words[0];
  $mysql_loop = for ($i = 1; $i <= $words_count; $i++){
    " OR ".$cpus_columns[$i]." LIKE ".$words[$i]
  }
  $mysql_query = $mysql_where . $mysql_loop;
  $query = $conn->query($mysql_query);

    echo "<div class='result-count'>Found " . $query->num_rows . " results.</div>";

    if($query->num_rows){
      while($r = $query->fetch_object()){

        echo "<div class='result'><a href='#'>" . $r->brand . $r->model . "</a></div>";
      }
    }
}

我开始慢慢地讨厌PHP和MySQL,4天后就无法工作了--这太可悲了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 03:48:51

这就是我如何在我的情况下搜索某物,只为名字,但你可以添加更多。

代码语言:javascript
复制
$arry = array();
$arry = explode(" ",$POST["search"]);    

$query="SELECT * FROM tblfbaccban WHERE ";
for($c=0;$c<sizeof($arry);$c++)
{
    $query=$query."Name LIKE'%$arry[$c]%'";
    if($c<sizeof($arry)-1)
    {
        $query=$query." OR ";
    }
}
$sql=mysqli_query($mysqli,$query)or die(mysql_error());
while ($row = mysqli_fetch_array($sql, MYSQLI_BOTH)) 
{
    echo $row["Name"]."<br>";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47511482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档