首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP搜索同名但大小不同的数据库

PHP搜索同名但大小不同的数据库
EN

Stack Overflow用户
提问于 2016-07-20 12:59:28
回答 1查看 46关注 0票数 1

基本上我有一个搜索功能

在我的数据库里

  • Macbook 13.3英寸
  • Macbook 11.6英寸
  • Macbook 13.3英寸

我的关键词是

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

The issue

当我搜索macbook时,它显示了所有三个都是正确的,但是当我搜索macbook时,它仍然显示macbook。同样的事情发生在我搜索macbooks 13.3英寸时,它仍然显示了所有3台macbook。

这是代码

代码语言:javascript
复制
<?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英寸时,我希望它只显示macbook air,也就是13.3英寸。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-20 13:27:29

在SQL语句中使用OR,可能意味着它是一个AND。

到目前为止,您正在搜索'Macbook‘或'air’或'pro‘等,其中包含了其中的一个关键字。

使用并用于此;它将在DB中搜索使用循环中分配的所有关键字的内容。它将搜索“Macbook”和“air”,而不是将它们分开。

因此,与其:

代码语言:javascript
复制
foreach($query as $text) {
  $condition .= "keywords LIKE '%".mysqli_real_escape_string($connect,     $text)."%' OR ";
}

尝试:

代码语言:javascript
复制
foreach($query as $text) {
  $condition .= "keywords LIKE '%".mysqli_real_escape_string($connect,     $text)."%' AND";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38482021

复制
相关文章

相似问题

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