我的查詢結果有問題。我有三個表,一個關注者表,一個用戶表和一個帖子表,而我的登錄用戶 = $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 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消