我正在尝试为我的 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/