好的,所以我一直试图弄清楚这两天并没有取得真正的成功
这是我的代码
$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
非常感谢:)
答案 0 :(得分:6)
你可以做SELECT DISTINCT ...
(DISTINCT optimization docs)
但是您的代码存在其他一些严重问题......
SELECT *
是evil mysql_*
函数为deprecated 使用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 ] )