Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在一个“窗口”中获取属于用户的所有图像;“循环”;_Php_Mysql - Fatal编程技术网

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

Php 如何在一个“窗口”中获取属于用户的所有图像;“循环”;,php,mysql,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 结果是为每个图像重复用户信息。 比如说 us

我有两个名为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年龄19图片1
  • 用户X年龄19图片2
  • userX年龄19图3
  • 等等
如何使所有属于他的图像都成为用户信息

例如:

用户名
年龄
性别
图1、图2、图3

等等。

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

您可以使用mysql的group_concat

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

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

foreach ( $rowset as $row ) {
  $user['pictures'][] = $row['picture'];
}
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

我现在还没有测试过,但我想我的记忆力没有衰退。您将在“图片”列中以逗号分隔所有图片。

@rodrigo别忘了用这种方法检查下一个用户记录;)