用户最多可以在表格中保存五张图像。我想在主页上查看单张图片 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>
问题是它显示了所有用户的所有图像。我希望每个用户一个图像。我怎样才能实现它。
答案 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。伙计在这里 期待你做自己的研究。
尼克