如何查看每个用户列表中的第一个图像作为其突出显示配置文件

时间:2017-10-20 07:42:28

标签: php mysql

用户最多可以在表格中保存五张图像。我想在主页上查看单张图片 uid。 我知道如何查看表格中的所有图像。但是,如何在主页上使用单个图像检索多个用户按upload_time顺序排列?

以便在主页上查看新的个人资料 My table structure 这是我的代码:

<?php 
$query2="SELECT * FROM member_images";
$result2=mysqli_query($db,$query2);
?>
     <div class="r_members_inner">
                      <?php  $i=1;
                            while($rows=mysqli_fetch_object($result2))
                            { 
                        ?>
                    <div class="item">
                        <img src="<?php echo "member_images/".$rows->file_name; ?>" height="200px" alt="">
                        <h4><?php echo $rows->uid;  ?></h4>
                        <h5>22 years old</h5>
                    </div>
                    <?php $i++; }?>
                </div>
  

问题是它显示了所有用户的所有图像。我希望每个用户一个图像。我怎样才能实现它。

1 个答案:

答案 0 :(得分:0)

您正在循环查询的所有结果,所以当然您将获得所有图像。您的查询是通用的。

现在我假设你的桌子是这样的:
- id,int,auto-increment,primary key
- uid,varchar,来自用户表的foreing键,不为null
- file_name,varchar,not-null
- upload_time,datetime,not-null

修改它以仅获得您想要的1张图像:

SELECT file_name
FROM member_images
WHERE uid = <SOME UID>
ORDER BY upload_time DESC
LIMIT 1

DESC将按照最新的顺序订购结果。所以LIMIT 1将只获得第一张图片,这是最新的。

现在,如果您想一次性获取每个用户的最新图像,请使用:

SELECT *
FROM member_images AS m
INNER JOIN (SELECT uid, max(upload_time) as latest
            FROM member_images
            GROUP BY uid) AS r
            ON m.upload_time = r.latest and m.uid = r.uid
ORDER BY upload_time DESC

BTW我也不知道怎么做,所以我在网上搜索,我发现了 StackOverflow上有很多关于如何做的页面。因此,downvotes。伙计在这里 期待你做自己的研究。

尼克