2013-04-17 64 views
1

我有一個網站可以打印出所有註冊用戶。 查詢工作正常,直到我想從另一個表中添加值。 現在可以打印出重複的值。選擇兩個表時查詢回顯重複值

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

李四 李四

但隨着化身添加表後打印出 李四 李四 李四 李四

這是我的查詢。

<?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 
    } 
    ?> 
+0

你所看到的表的笛卡爾乘積,因爲你沒有連接表conditi上。嘗試指定'WHERE'caluse – Ejaz

回答

1

你可能想看看MySQL joins.

舉例來說,你可以做類似如下:

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 

這裏假設你有(你現在應該有,如果你不't)userdetails表中的列,其中包含用於通過id引用用戶表的鍵。

+0

謝謝,這個工作像一個魅力,不確定我是否真的需要左連接,但現在我明白了爲什麼。 謝謝@Leng老師 – Dymond

+0

@Dymond很高興我可以幫忙。 :) – Leng

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

此查詢每個用戶和整個的UserDetails表(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 

(假設你兩個表中有用戶ID)