php - 如何从 php 中的 mysql 查询中删除重复结果?

标签 php mysql

我正在尝试为我的 PHP 站点提供搜索功能。用户应该能够在行和列中搜索他们想要的查询,比如“搜索引擎”。我试过这个 php 代码:

<?php
    $con = @mysqli_connect("localhost", "root", "", "search");
  $output = '';

  if(isset($_POST['search'])) {
    $search = $_POST['search'];
    $search = preg_replace("#[^0-9a-z]i#","", $search);

    $query = mysqli_query($con, "SELECT * FROM sites WHERE (site_title LIKE '%$search%' or site_link LIKE '%$search%' or site_keywords LIKE '%$search%')") or die ("Could not search");
    $count = mysqli_num_rows($query);

    if($count == 0){
      $output = "There was no search results!";
    print $output;

    }else{

      while ($row = mysqli_fetch_array($query)) {

    $site_keywords = $row ['site_keywords'];
    $site_tit = $row ['site_title'];
    $site_link = $row ['site_link'];

    $output .='<div> '.$site_tit.''.$site_keywords.''.$site_link.'</div>';
    print $output;

      }

    }
  }
?>

一切正常,但我得到了重复的结果。我已经阅读了很多答案,这是我到目前为止所做的:我使用了 SELECT DISTINCT * FROM .... 以及 SELECT DISTINCT site_id FROM .... 但没有返回任何结果。我尝试 GROUP BY 但他们没有删除重复项并且没有返回任何内容。我还在 where 条件下对 $row = mysqli_fetch_array($query) 应用了 PHP array_unique(),但它也没有返回任何结果。 如果我只能通过使用 SQL 来做到这一点,或者我必须像使用函数一样通过 PHP 删除重复项,请指导我。提前致谢。

最佳答案

移动:

print $output;

在循环之外。

现在 $output 每次循环都会被打印出来。如果您的结果是 A,B,C 那么您的输出将是 A,A,B,A,B,C(带有 div 等)

关于php - 如何从 php 中的 mysql 查询中删除重复结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51252693/

相关文章:

php - 从中间件的终止方法中的请求调用方法

php - Laravel Dusk(Windows 平台不支持 TTY 模式)

mysql - MySQL Profiler 是否使用查询缓存?

MySQL错误代码: 1175 during UPDATE in MySQL Workbench

c# - 使用 OUT 参数调用 MySQL 过程

python - peewee DoubleField 的默认值不会反射(reflect)在 MySQL 数据库中

php - 网站显示错误的时区

java - 本科论文 Flash/Flex/Actionscript

php - 正则表达式匹配特定内容的html标签

php - 为什么我们把 mysql 写在 $conn = new pdo(); 中如果 PDO 与平台无关