1

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

假设我有 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
  }
  ?>
4

2 回答 2

1

您可能想查看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 引用用户表的键。

于 2013-04-17T21:05:27.850 回答
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)

于 2013-04-17T21:06:52.397 回答