簡體   English   中英

選擇兩個表時查詢回顯重復值

[英]Query echo duplicated values when selecting two tables

我的網站可以打印出所有注冊用戶。 該查詢工作正常,直到我想從另一個表中增加價值。 現在,它打印出重復的值。

可以說我有2個用戶。 它應該打印出來

約翰·杜·簡·杜

但是在將表格添加了頭像后,它會打印出John Doe Jane Doe John Doe Jane Doe

這是我的查詢。

<?php 
function fetch_users(){
global $db;
$query = $db->query("SELECT user.id, user.username,user.email, userdetails.profile_img FROM user , userdetails");
$user = array();
while(($row = $query->fetch(PDO::FETCH_ASSOC)) !==FALSE) { 
 $user[] = $row;
}
return $user;
}
?>

但是,如果我刪除最后添加的表userdetails,並使用查詢而不將表添加到名稱中。 它可以再次正常工作,但隨后不再使用虛擬角色。

PHP。

<?php foreach(fetch_users() as $user){  ?>
 <p>
 <a href="profile.php?uid=<?php echo $user['id'];?>"><?php echo $user['username'];?> </a>
 </p>
 <?php
  }
  ?>

您可能要研究MySQL聯接。

例如,您可以執行以下操作:

SELECT user.id, user.username, user.email, userdetails.profile_img
FROM user
LEFT JOIN userdetails
ON user.id = userdetails.<user id column name goes here>
GROUP BY user.id

假設您在userdetails表中有一列(如果沒有的話,肯定應該有),其中包含按id引用用戶表的鍵。

SELECT user.id, user.username,user.email, userdetails.profile_img FROM user , userdetails

此查詢為每個用戶和整個userdetails表選擇一次(John Doe + John Doe | John Doe + Jane Doe | Jane Doe + John Doe | Jane Doe + Jane Doe = 4行)

您還必須在此寫一個條件:

SELECT user.id, user.username,user.email, userdetails.profile_img FROM user , userdetails WHERE user.id = userdetails.id

(假設您在兩個表中都具有用戶標識)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM