Php 如何阻止显示重复的值?
好吧,我已经试着弄明白这一点两天了,但没有真正的成功 这是我的密码Php 如何阻止显示重复的值?,php,mysql,Php,Mysql,好吧,我已经试着弄明白这一点两天了,但没有真正的成功 这是我的密码 $splash_list = ''; $splash_array = array(); $sql = "SELECT * FROM pm WHERE receiver='$username' OR sender='$username'"; $query = mysqli_query($db, $sql); while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$splash_list = '';
$splash_array = array();
$sql = "SELECT * FROM pm WHERE receiver='$username' OR sender='$username'";
$query = mysqli_query($db, $sql);
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
if($username == $row['sender']){
$otuser = array_push($splash_array, $row['receiver']);
$this_user = $row['sender'];
} else {
$otuser = array_push($splash_array, $row['sender']);
$this_user = $row['receiver'];
}
}
foreach($splash_array as $otuser){
$splash_list .= '<div>'.$otuser.'<br></div>';
}
输出是
otuser1
otuser1
otuser1
otuser2
otuser2
如果有人能告诉我该怎么做
仅输出每个值一次,如下所示
otuser1
otuser2
非常感谢:好的,您可以选择不同的
但是你的代码还有其他一些严重的问题
选择*是
mysql_*函数是
您的代码易受攻击
了解如何使用PHP获得更多帮助
生成的代码将类似于
$query = $db->prepare("
SELECT DISTINCT sender, receiver
FROM pm
WHERE receiver = :username
or sender = :username
");
$result = $query->execute(array("username" => $username));
请注意,文档建议您使用如下冒号→ :用户名=>$username。PDO参数绑定的一个鲜为人知的优点是:是可选的。尤皮 我认为DISTINCT不适用于此。因为DISTINCT将返回发送方和接收方的唯一组合,所以“otuser1”、“otuser2”和“otuser2”、“otuser1”将有所不同
最简单的解决方案:
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
为什么不将查询改为distinct,而不是处理PHP中的唯一值?可能的副本不应该是:username=>$username,因为您正在使用占位符,其中receiver=:username根据手册链接^-«根据手册链接的示例2@Fred ii-,不。选项:是可选的。非常棒,对吧?非常棒!如果是可选的,那就太好了。我还没有在他们的文档中找到它,但我相信你的话-@弗雷德二世-无论如何,谢谢你这么说。我在帖子的底部添加了一个通知,提醒有类似担忧的人。