PHP:mysql_fetch_array排除重复条目

时间:2016-02-11 16:46:03

标签: php mysql arrays sorting

我得到了一行简单的代码,用于获取续集数据库并填充类别列表,这些类别字符串来自产品表,因此许多产品行会产生重复的类别条目。

$cat_result = $mysqli -> query("SELECT * FROM products");
while ($cat_row = mysqli_fetch_array($cat_result, MYSQL_NUM)) { 
    if($cat_row['4'] != NULL) { 
        print '<li><a href="/category/'. $cat_row['4'] .'">'. $cat_row['4'] .'</a></li>'; 
    }
}

目前的输出是这样的:

  • 组别
  • 组别
  • 类别2
  • 类别2

那么我如何能够抑制重复输入并获得类似的东西?

  • 组别
  • 类别2

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

根据要求:

您可以在SELECT中使用DISTINCT和/或使用GROUP BY

即:

SELECT DISTINCT col1, col2 FROM TABLE GROUP BY col_x

根据http://dev.mysql.com/doc/refman/5.7/en/distinct-optimization.html

这将避免您的查询重复。

此外,WHERE子句也可能有用(稍后)。

即:

SELECT DISTINCT col1, col2 FROM TABLE WHERE col_x = 'y' GROUP BY col_x

参考:

答案 1 :(得分:3)

根据DISTINCTGROUP BY以上的所有人的建议,两者都可以解决您的问题,因此您可以执行以下操作: -

假设列名为category,然后: -

$cat_result = $mysqli -> query("SELECT DISTINCT(category) FROM products"); 

OR 

$cat_result = $mysqli -> query("SELECT * FROM products GROUP BY category");

注意: - 您也可以按照其他人的建议在DISTINCT中选择n个不同的列。感谢。