我有一个网站打印出所有注册用户。 查询工作正常,直到我想从另一个表添加值。 现在它打印出重复的值。
假设我有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
}
?>
答案 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)