如何防止在php中重复两次相同的值


How to prevent echoing same value twice in php

所以我的表单中有这个下拉列表,它从数据库中提取"标签"作为下拉选项的值:

<select name="cartags">
   <?php $result = mysql_query("SELECT * FROM Products WHERE ID > '0'");
   while($row = mysql_fetch_array($result))
   {
      echo "<option value='""; echo $row['Tag']; echo "'""; echo ">"; echo $row['Tag']; echo "</option>";
   } 
   ?>   
</select>

我的问题是什么?我的问题是,我在数据库中添加了很多产品,我的代码为所有这些生产商制作了带有标签的下拉列表,即使它们有相同的标签。所以我需要的是如何防止同一个标签在我的下拉列表中出现两次的解决方案。

我是PHP的新手,这是我在这里的第一个问题,所以我真的希望我能很好地解释我的问题。

提前感谢!

WHERE ID > '0'的用途是什么?如果ID是一个自动增量,那么它将始终为正。如果不是,应该是。

为什么要使用mysql_fetch_array,然后只使用关联键?您应该使用mysql_fetch_assoc

为什么每次要输出变量时都要使用新的echo?只是连接。

为什么在value中设置与选项文本相同的字符串?如果没有值,它将默认为文本。

为什么不在列名和表名周围使用回溯标记?

试试这个:

<select name="cartags">
<?php
  $result = mysql_query("SELECT DISTINCT `Tag` FROM `Products`");
  while(list($tag) = mysql_fetch_row($result)) {
      echo "<option>".$tag."</option>";
  }
?>
</select>

试试这个

<select name="cartags">
<?php $result = mysql_query("SELECT Tag, COUNT(Tag) tg Products WHERE ID > '0'  GROUP BY Tag HAVING COUNT(Tag)>0 ORDER BY tg DESC");
while($row = mysql_fetch_array($result))
{
   echo "<option value='""; echo $row['tg']; echo "'""; echo ">"; echo $row['tg']; echo " </option>";
 } 
?>   
</select>

它还将显示具有最多第一个的顶部标签。