簡體   English   中英

困難的 PHP/MySQL 代碼

[英]Difficult PHP/MySQL code

我有 3 個數據庫表

  1. 用戶(用戶名等)
  2. 朋友(朋友ID,用戶ID,朋友用戶ID)
  3. 更新(更新 ID,用戶 ID,更新)

基本上,我編寫了一個腳本,讓您可以通過活動(如狀態)更新您的個人資料,並能夠彼此成為朋友(使用朋友表,用戶 ID + 朋友用戶 ID = 他們的朋友)

但是,當涉及到顯示這些更新的主頁時,我可以完全顯示我的(用戶登錄),但朋友的更新不顯示。

我遇到了問題,因為似乎需要進行很多查詢,選擇登錄到朋友表的用戶並獲取他們的朋友用戶 ID...然后是另一個選擇查詢以選擇用戶登錄的所有狀態id 和朋友 id。 然后另一個選擇查詢從所有用戶配置文件中選擇信息,以在狀態旁邊顯示他們的姓名。

目前,我只能想到循環查詢並將 id 放入數組中,然后將數組放入選擇查詢中以供朋友更新並顯示它們..有更好的方法嗎? 代碼一團糟,哈哈,我對查詢的數量感到困惑(對於朋友和登錄的用戶,基本上每個查詢 2 個)必須是一種更簡單的方法,哈哈

我認為您應該研究 JOIN 和子查詢。 您應該進行“子查詢” - 選擇登錄的用戶然后加入朋友表(以獲取所有朋友的用戶 ID),然后使用該列表在更新表中進行過濾

基本連接解釋

子查詢信息

您可以通過執行類似的操作來獲取用戶的更新和用戶朋友的更新。

SELECT u.*
FROM updates u INNER JOIN 
   (SELECT friendsuserid as userid FROM friends WHERE userid = [youruserid]
    UNION
    SELECT userid FROM friends WHERE friendsuserid = [youruserid]
   )f
ON u.userid = f.userid

錫川,

是的,我似乎只能得到這個

select u.* from statusupdates u INNER JOIN (select friendsuserid from friends where userid = '2' UNION SELECT userid from friends where userid = '2')f on u.userid = f.friendsuserid;SELECT u.userid,u.email,u.name FROM users u INNER JOIN (SELECT friendsuserid FROM friends WHERE userid = '2' UNION SELECT userid FROM friends WHERE userid = '2')f ON u.userid = f.friendsuserid;

但是我認為這實際上是兩個查詢是否正確? 在 mysql 命令行中(測試查詢以查看它們是否在我編碼之前給了我需要的東西)給了我我需要的一切。 但是很確定 mysql 不會在 php 代碼中接受它,因為它是兩個查詢。 我試過使用內連接將用戶表添加到它,但它似乎不正確

編輯:

在命令行中搞砸之后,我設法得到了我需要的東西

SELECT s.status,u.name,f.friendsuserid FROM statusupdates s 加入用戶 u ON s.userid=u.userid 加入朋友 f ON u.userid=f.friendsuserid;

然而,這只給我我的朋友更新,而不是我的。 我試過把一個 where 放進去,但它不起作用.. 我現在可以拉出我需要的一切,除了我自己的更新,它只會顯示 $_SESSION['userid'] 狀態和他們的朋友嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM