循环通过 mysqli 行但只有没有重复
Posted
技术标签:
【中文标题】循环通过 mysqli 行但只有没有重复【英文标题】:Looping through mysqli row but only no duplicates 【发布时间】:2018-08-26 09:03:13 【问题描述】:我有一个存储了相机详细信息的数据库,我想遍历数据库的行并根据相机型号创建复选框,但是如果复选框已经存在相同的相机型号,我不想要很多复选框被创建以便限制为只有一个。
我很感激任何可以指导我实现它的帮助!
提前致谢!
<?php
$checkquery = "SELECT * FROM markers WHERE session_id = '".$_SESSION["id"]."'";
$result = mysqli_query($connection,$checkquery);
if (!$result)
die('Invalid query: ' . mysqli_error());
echo '<form>';
echo "<h3>Camera Model: </h3>";
while ($row = @mysqli_fetch_assoc($result))
echo '<label>'.$row['model']. '</label>'.'<input type="checkbox" name="categories" value='.$row['model'].' >';
echo '</form>';
?>
【问题讨论】:
【参考方案1】:您可以通过 SQL 查询使用DISTINCT
...
$checkquery = "SELECT DISTINCT model
FROM markers
WHERE session_id = '".$_SESSION["id"]."'";
但也要考虑使用准备好的语句和绑定变量来使您的应用程序更安全。
更新: 还有一些其他的东西......
while ($row = mysqli_fetch_assoc($result))
echo '<label>'.$row['model']. '</label>'.'<input type="checkbox" name="categories" value="'.$row['model'].'" >';
正如 Syscall 在评论中指出的那样, value 属性应该有引号。
并且请停止在您的代码中使用@
,这会隐藏各种应该修复而不是隐藏的问题。
【讨论】:
谢谢!它奏效了,我对所有这一切都很了解,所以我边走边学!我假设 DISTINCT 只是意味着它返回不同的值,所以没有重复? 还可能表示value
属性值周围缺少引号。
感谢@Syscall,添加了这一点以及关于不使用@
的另一条评论。
如果这回答了您的问题,请考虑将其标记为已回答 - meta.stackexchange.com/questions/5234/…以上是关于循环通过 mysqli 行但只有没有重复的主要内容,如果未能解决你的问题,请参考以下文章