如何在一个“循环”中获取属于用户的所有图像

时间:2011-02-21 10:51:20

标签: php mysql

我有两个名为users和images的mysql表。每个用户最多可以有5张图片。在页面中,我显示用户信息和所有图像。 当我像这样查询时

SELECT
  SQL_CALC_FOUND_ROWS,
  u.username,
  u.gender,
  u.etc
  .........
  i.picture
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE 
 some_condition

结果是重复每个图像的用户信息。 例如

  • userX age19 pic 1
  • userX age19 pic 2
  • userX age19 pic 3
  • 等。

如何将结果作为属于他的所有图像的用户信息?

例如:

用户名
年龄
性爱
pic1,pic2,pic3

3 个答案:

答案 0 :(得分:2)

我建议您运行两个查询,一个用于用户,另一个用于每个用户图片。试图在一个查询中获取它并以您想要的方式构建它是复杂的。

答案 1 :(得分:0)

$rowset = array(); // your fetched data

$user = $rowset[0];
unset($user['picture']);
$user['pictures'] = array();

foreach ( $rowset as $row ) {
  $user['pictures'][] = $row['picture'];
}

答案 2 :(得分:0)

你可以使用mysql的group_concat。

SELECT SQL_CALC_FOUND_ROWS,
  u.username,
  u.gender,
  u.etc,
  ...
  GROUP_CONCAT(i.picture SEPARATOR ",") AS pictures
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE 
  some_condition
GROUP BY u.id

我现在还没有测试过,但我认为我的记忆并没有失败。您将在“图片”栏中以逗号分隔所有图片。