我的查询结果有问题。我有三个表,一个关注者表,一个用户表和一个帖子表,而我的登录用户 = $user_name。我的代码从 follower 表中调用所有,其中 follower 是 = 登录用户,并将所有用户的名称称为他们的关注者($followi)。然后,我从发帖者名称为 = 的帖子表中调用 all 到用户关注的用户的用户名。并且代码有效。我的问题:我试图按日期对我的结果进行排序,但 MYSQL 将优先级放在 Followi 上,并按发帖用户的顺序显示,然后是日期的顺序。所以如果一个用户一个月有 2 个帖子,它会显示这两个,然后显示下一个用户,即使他们在最后一分钟发布了 5 次。我如何仅根据日期显示,同时将其保持在仅显示登录用户关注的用户帖子的位置?这是我的代码 <?php$follow = "SELECT followi from follow where follower = '$user_name'";$runf = mysqli_query($con,$follow);while($row=mysqli_fetch_array($runf)){$followi = $row['followi'];$sel_msg = "SELECT * from posts where poster_name = '$followi' ORDER by post_time desc";$run_msg = mysqli_query($con,$sel_msg);while($row_msg=mysqli_fetch_array($run_msg)){echo "<div id='post_box'>".$row_msg['post_content']."</div>"; }}?>
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
那是因为您的循环以 followersi 数据开始(while 循环)。这是您检索数据并在当前逻辑中显示它的顺序:
获取用户 A 的帖子
用户 A 帖子 1
用户A帖子2
用户A帖子3
获取用户 B 的帖子
用户 B 帖子 1
用户 B 帖子 2
用户 B 帖子 3
我相信您正在尝试做的是按日期顺序获取帖子,但同时检索要显示的用户信息。您可以使用 JOIN 语句来做到这一点,例如
$sel_msg = "SELECT posts.*, users.name, users.image
FROM posts
JOIN users ON posts.userId = users.id
ORDER BY post_time DESC";
$run_msg = mysqli_query($con,$sel_msg);
您的代码中不需要第一个 sql 语句
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消