我试图为我的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 ....
但没有返回任何结果。我尝试分组,但他们没有删除重复项,也没有返回任何结果。我还将php array\u unique()应用于 $row = mysqli_fetch_array($query)
在where条件下,但它也没有返回任何结果。如果我能做到这一点,只使用sql请或我必须删除重复的php像使用一个函数,请指导我。提前谢谢。
1条答案
按热度按时间uoifb46i1#
移动:
在圈外。
马上
$output
每次循环都要打印。如果你的结果是A,B,C
那么你的输出将是A,A,B,A,B,C
(带div等)