PHP搜索具有相同名称但不同大小的数据库

时间:2016-07-20 12:59:28

标签: php

基本上我有搜索功能

在我的数据库中我有

  • Macbook Air 13.3英寸
  • Macbook Air 11.6英寸
  • Macbook Pro 13.3英寸

我的关键字是

  • macbook air 13.3 13英寸
  • macbook air 11.6 11英寸
  • macbook pro 13.3 13英寸

问题

当我搜索macbook时,它显示所有正确的3,但是当我搜索macbook pro时,它仍然显示macbook播放。同样的事情发生在我搜索macbook air 13.3英寸时它仍然显示所有3个macbook。

这是代码

<?php
  if(isset($_GET["search"]))
  {
  $condition = '';
  $query = explode(" ", $_GET["search"]);
  foreach($query as $text)
{
  $condition .= "keywords LIKE '%".mysqli_real_escape_string($connect, $text)."%' OR ";
}
  $condition = substr($condition, 0, -4);
  $sql_query = "SELECT * FROM products WHERE " . $condition;
  $result = mysqli_query($connect, $sql_query);
  if(mysqli_num_rows($result) > 0)
{
  while($row = mysqli_fetch_array($result))
{
  $id = $row['id'];
  $title = $row['title'];
  $price = $row['price'];
  $description = $row['description'];
  $keywords = $row['keywords'];
  $link = $row['link'];
  $metadata = $row['metadata'];

  include('inca.php');
}
}
  else
{
  echo '<label>Data not Found</label>';
}
}
?>

当我搜索Macbook air 13.3英寸时,我希望它只显示13.3英寸的macbook空气..

1 个答案:

答案 0 :(得分:1)

你在SQ​​L语句中使用OR,你可能认为它是一个AND。

截至目前,您正在搜索“Macbook”或“air”或“pro”等,其中包含其中包含其中一个关键字的所有内容。

使用AND;它将在您的数据库中搜索使用您在循环中指定的所有关键字的内容。它会搜索'Macbook'和'air'而不是它们分开。

所以代替:

foreach($query as $text) {
  $condition .= "keywords LIKE '%".mysqli_real_escape_string($connect,     $text)."%' OR ";
}

尝试:

foreach($query as $text) {
  $condition .= "keywords LIKE '%".mysqli_real_escape_string($connect,     $text)."%' AND";
}