我的查询结果有问题。我有三个表,一个跟随者表,一个用户表和一个帖子表,而我登录的用户= $ user_name。我的代码从关注者=的关注者表中调用登录用户的所有代码,并将所有用户的名称称为其关注者($ followi)。然后,我从发帖人表(发帖人姓名=)中的所有人调用该用户所关注的用户名。和代码的作品。
我的问题:我试图按日期对结果进行排序,但是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>
";
}}
?>
这是因为您的循环从followersi数据开始(while循环)。这是您检索数据并将其显示在当前逻辑中的顺序:
获取用户A的帖子
获取用户B的帖子
您正在尝试按日期顺序获取帖子,但检索要同时显示的用户信息。您可以使用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语句