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

如何在php中从mysql查询中删除重复结果?,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

我试图为我的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;

      }

    }
  }
?>

一切正常,但我得到了重复的结果。我已经阅读了很多答案,到目前为止我已经做了以下工作:我使用了
selectdistinct*FROM…
selectdistinct site\u id FROM…
,但没有返回任何结果。我尝试分组,但他们没有删除重复项,也没有返回任何内容。我还在where条件下对
$row=mysqli\u fetch\u array($query)
应用了PHP array\u unique(),但它也没有返回任何结果。 如果我能做到这一点,只使用SQL请或我必须删除重复的PHP像使用一个函数,请指导我。提前感谢。

移动:

print $output;
在循环之外

现在,
$output
正在通过循环每次打印。如果您的结果是
A、B、C
,那么您的输出将是
A、A、B、A、B、C
(带div等)

移动:

print $output;
在循环之外



现在,
$output
正在通过循环每次打印。如果您的结果是
A、B、C
,那么您的输出将是
A、A、B、A、B、C
(带div等)。

请稍候。您将获得重复的站点,因此切换到
从中选择不同的站点id你什么也得不到?我不相信。无论如何,@manassehkatz肯定在您的PHP中发现了一个问题,这个问题可能比sql更为严重。@suppress警告。这在开发代码时有用吗?注意:
mysqli
的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:
$db=new mysqli(…)
$db->prepare(“…”)
过程接口是PHP 4时代引入
mysqli
API时的产物,不应在新代码中使用。警告:使用
mysqli
时,应使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。谢谢@tadman,我会调查的,看起来很有趣。但最终我必须正确使用mysql查询。请稍等。您将获得重复的站点,因此切换到
从中选择不同的站点id你什么也得不到?我不相信。无论如何,@manassehkatz肯定在您的PHP中发现了一个问题,这个问题可能比sql更为严重。@suppress警告。这在开发代码时有用吗?注意:
mysqli
的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:
$db=new mysqli(…)
$db->prepare(“…”)
过程接口是PHP 4时代引入
mysqli
API时的产物,不应在新代码中使用。警告:使用
mysqli
时,应使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。谢谢@tadman,我会调查的,看起来很有趣。但最终我必须正确使用mysql查询。谢谢你,我的朋友,我觉得自己像个白痴!这真是太棒了,现在我不必把头发点着了@杰伊先生-我以前有过不属于我的东西。只要我们从错误中吸取教训,继续前进,一切都会好起来的。我太熟悉这些会毁掉一切的小失败了,我很擅长python,但当你在新界的时候,事情就变得混乱了!再次感谢@manassehkatz,并向您致以最良好的祝愿。是的@manassehkatz,与许多编程语言相比,python几乎太容易了。多年前我学习了C++和java,但是Python让所有的事情都变得简单,让我变得懒惰。C++用这些指针和其他方法驱动我疯狂。首先我想在我的网站上使用Django或Flask,但最后PHP赢了,因为我的网站大部分都是HTML和JavaScript,不需要太多地使用python。。。PHP似乎是一个更合理的选择,因为我之前也研究过它。有时候,对你正在使用的语言进行这些细微的调整需要时间去适应。当然,你是对的。PHP对主机友好得多。它是网站开发的通用语言。但使用Django或Flask和便宜的VPS也很好,只是需要更多的努力。PHP的CVE比Flask和Django多得多,但考虑到它是一个更受欢迎的选项,而且比python框架旧得多,我认为bug会更快地被发现和修复。。。这是基于这样一种假设,即他们比在新框架上工作的开发人员更看重安全性……谢谢你,我的朋友,我觉得自己像个白痴!这真是太棒了,现在我不必把头发点着了@杰伊先生-我以前有过不属于我的东西。只要我们从错误中吸取教训,继续前进,一切都会好起来的。我太熟悉这些会毁掉一切的小失败了,我很擅长python,但当你在新界的时候,事情就变得混乱了!再次感谢@manassehkatz,并向您致以最良好的祝愿。是的@manassehkatz,与许多编程语言相比,python几乎太容易了