如何阻止显示重复值?

时间:2014-05-09 06:27:54

标签: 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)){
        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

非常感谢:)

2 个答案:

答案 0 :(得分:6)

你可以做SELECT DISTINCT ...DISTINCT optimization docs

但是您的代码存在其他一些严重问题......

  1. SELECT *evil
  2. mysql_*函数为deprecated
  3. 您的代码容易受到SQL injections
  4. 的攻击

    使用PHP PDO寻求更多帮助。

    您生成的代码看起来像

    $query = $db->prepare("
      SELECT DISTINCT sender, receiver
      FROM pm
      WHERE receiver = :username
         or sender   = :username
    ");
    
    $result = $query->execute(array("username" => $username));
    

    注意文档建议您应该使用这样的冒号→":username" => $username。关于PDO参数绑定的一个鲜为人知的好处是:是可选的。 Youpi!

答案 1 :(得分:0)

我认为DISTINCT对此不起作用。由于DISTINCT将返回发件人和收件人的唯一组合,因此('otuser1','otuser2')和('otuser2','otuser1')会有所不同。

最简单的解决方案:

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

http://de2.php.net/manual/en/function.array-unique.php

相关问题