【问题标题】:PHP - Duplicate results when using search barPHP - 使用搜索栏时重复的结果
【发布时间】:2012-12-07 20:51:32
【问题描述】:
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each){
    $x++;
    if($x==1) 
        $construct .="concat_ws(Name, Summary, Description, OpeningHours, Address, Postcode, Keywords) LIKE '%$search_each%' ";
    else
        $construct .="AND concat_ws(Name, Summary, Description, OpeningHours, Address, Postcode, Keywords) LIKE '%$search_each%' ";
}

$construct ="SELECT * FROM Rating, Attraction WHERE $construct" ;
$run = mysql_query($construct);
$foundnum = mysql_num_rows($run);

if ($foundnum==0)
    echo "Sorry, there are no matching result for '$search'" ;
else
{
    echo "";
    while($row = mysql_fetch_assoc($run)){
        echo '<a href="details.php?ID=' . $row['AttractionID'] . '"><img class="attractionimg" src="'. $row['ImageUrl'] . '" height="160" width="210" /></a>';
        echo '<div class="a-textcontain">';
        echo '<h2><a href="details.php?ID=' . $row['AttractionID'] . '">' . $row['Name'] . '</a></h2>'; 
        echo '<p class="a-text">' . $row['Summary'] . '</p>';
        echo '</div>';
        echo '<img class="rating" src="'. $row['RatingUrl'] . '" height="25" width="140" alt="Rating"/>';
        echo '<div class="aborderline"></div>';
        break;
    }
}  

我的数据库中有 12 行数据。当我搜索时,它工作正常,但每个搜索结果重复 12 次。我试过放一个“休息”;就像您在上面看到的那样,但这会将搜索限制为只有一个结果...

有人有什么想法吗?


$construct = "SELECT Attraction.*, Type.TypeName, Rating.RatingUrl";

$construct .= "来自景点";

$construct .= "INNER JOIN Type ON Attraction.Type = Type.TypeID";

$construct .= "Inner JOIN Rating ON Attraction.AttractionID = Rating.AttractionID";

$construct .= "WHERE Attraction = $construct" ;

【问题讨论】:

  • 你能删除所有多余的空白行,这样整个东西就可以同时显示在一个屏幕上吗?

标签: php search duplicates rows


【解决方案1】:
SELECT * FROM Rating, Attraction

您正在执行多表查询,其中Rating 的每一行都连接到Attraction 的每一行,结果相乘。您将需要一个带有特定连接条件或其他可能的 LEFT JOIN 查询,具体取决于意图是什么。

请参阅http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html、http://dev.mysql.com/doc/refman/5.1/en/join.html。

【讨论】:

  • 我认为这与此有关,但我无法为 $construct 查询编写 WHERE,我有它,但它不起作用
  • ...?这是否意味着您不知道如何应用此解决方案?
  • 抱歉,我已经编辑了帖子,放入了我无法使用 WHERE 和 $construct 查询构建的代码,非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多