我正试图在下面的for循环中显示唯一值。从mysql中检索数据。目前,它显示此列中的所有值(书名),但只想显示唯一值并从显示中删除任何重复值。
<?php
$i=0;
while($rows=mysql_fetch_array($result))
{
$roll1[$i]=$rows['bkname'];
$i++;
}
$total_elmt=count($roll1);
?>
<form method="POST" action=" ">
<select name="sel1" id="sel1">
<option value="Select Book Name">Book Name</option>
<?php
for($j=0;$j<$total_elmt;$j++)
{
?><option><?php
echo $roll1[$j];
?></option><?php
}
?>
</select>
</form>
答案 0 :(得分:1)
您可以在查询中使用DISTINCT
子句,而不是删除PHP中的重复项:
<?php
$db = new mysqli('localhost', 'username', 'password', 'database_name');
// $sql = 'SELECT DISTINCT(bkname) FROM your_table_name';
$sql = 'SELECT * FROM your_table_name GROUP BY bkname';
$query = mysqli_query($db, $sql);
?>
<form method="POST" action="">
<select name="sel1" id="sel1">
<option disabled selected>Book Name</option>
<?php while($row = mysqli_fetch_assoc($query)): ?>
<option value="<?php echo $row['bkname']; ?>"><?php echo $row['bkname']; ?></option>
<?php endwhile; ?>
</select>
</form>
强制性注释:
Please, don't use
mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:0)
PHP array_unique
如何运作?
<?php
$input = array("Tale of two cities", "Tale of two cities", "A brief history of time", "Hop on Pop");
$noduplicates = array_unique($input);
var_dump($noduplicates);
?>
答案 2 :(得分:0)
使用DISTINCT关键字最容易在查询中处理此问题。如果您的查询类似于
SELECT bkname FROM Books;
相反,你会做
SELECT DISTINCT bkname FROM Books;
如果您不想修改数据集,并且只想从数据集中的一列中获取一组唯一值,则可以将这些值作为哈希映射插入到数组中。关键是确保唯一性并消除重复。
while($rows=mysql_fetch_array($result)){
$roll1[$rows['bkname']] = $rows['bkname'];
}