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-,不。选项:是可选的。非常棒,对吧?非常棒!如果是可选的,那就太好了。我还没有在他们的文档中找到它,但我相信你的话-@弗雷德二世-无论如何,谢谢你这么说。我在帖子的底部添加了一个通知,提醒有类似担忧的人。