选择两个表时,查询回显重复的值

时间:2013-04-17 21:01:56

标签: php pdo

我有一个网站打印出所有注册用户。 查询工作正常,直到我想从另一个表添加值。 现在它打印出重复的值。

假设我有2个用户。它应该打印出来

John 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
  }
  ?>

2 个答案:

答案 0 :(得分: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

假设您拥有(如果不这样,你肯定应该拥有)userdetails表中的一列,其中包含按ID引用用户表的键。

答案 1 :(得分:1)

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

(假设您在两个表中都有用户ID)