我正在尝试为我的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,但他们没有删除重复项,却未返回任何内容。我还在$row = mysqli_fetch_array($query)
的where条件中应用了PHP array_unique(),但是它也没有返回任何结果。
如果只能使用SQL来完成此操作,或者必须像使用函数一样通过PHP删除重复项,请指导我。预先感谢。
答案 0 :(得分:4)
移动:
print $output;
在循环之外。
现在$output
每次通过循环都被打印。如果您的结果是A,B,C
,那么您的输出将是A,A,B,A,B,C
(包含div等)