多循环中的查询和按最后一个查询的 id 排序
Posted
技术标签:
【中文标题】多循环中的查询和按最后一个查询的 id 排序【英文标题】:Queries in multiple loop and Ordering by id of last query 【发布时间】:2020-02-08 00:33:17 【问题描述】:我有两个 while
循环和循环中的两个查询。
我必须通过其 ID 将 posts
订购为 DESC。但是帖子循环在另一个查询的循环下。
$follows=$db->prepare("SELECT * FROM follows WHERE follower=:login");
$follows->execute([':login'=>$login['id']]);
while($followed=$follows->fetch())
$posts=$db->prepare("SELECT * FROM posts WHERE user=:followed ORDER BY id DESC");
$posts->execute([':followed'=>$followed['following']]);
while($post=$posts->fetch())
?>
...
<?php ?>
此方法是根据下表的ID号排序帖子。 我想将帖子订购为 DESC,仅用于帖子的 ID。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我认为您可能过于复杂了。如果您需要单个数据集,则应使用单个连接查询。你可以执行一次,然后用 php 循环遍历结果:
select ...
from follows f
inner join posts p on p.user = f.following
where f.follower = :login
order by p.id desc
请注意,我将select
子句留空。你真的应该枚举你想要的列(如果需要,给它们取别名以避免冲突)而不是使用*
:这样,结果集的结构是明确的。
【讨论】:
以上是关于多循环中的查询和按最后一个查询的 id 排序的主要内容,如果未能解决你的问题,请参考以下文章
for循环查询,导致最后返回的list都是最后一个对象的问题