1

現在、フォローしている人のユーザー名を表示しようとしていますが、問題は、次のプロセスでは、自分とフォローしている人のIDのみが保存されることです。

IDが表示されるところまで来ましたが、ハイパーリンクされた名前を表示したいと思います。$p_idはプロファイルIDです。

これが私が持っているものです:

$following = mysql_query("SELECT `follower`, `followed` FROM user_follow WHERE follower=$p_id");

I am following: <?php while($apple = mysql_fetch_array($following)){

            echo '<a href="'.$apple['followed'].'">+'.$apple['followed'].'</a> ';
            }?>

ユーザー名は、フィールド「username」の下の別のテーブル「users」にあります。現在表示されているIDと一致し、表示される必要があります。

4

2 に答える 2

2

したがって、必要なのは、に対してJOIN(暗黙的にINNER JOIN)のペアですusers。1つはフォロワーに参加し、もう1つはフォローに参加します。

SELECT 
  /* Rather than SELECT * you need to be specific about the columns, and
     give them aliases like followed_name since you have 2 tables with the same
     column names in the query */
  ufollower.id AS follower_id,
  ufollower.username AS follower_name,
  ufollowed.id AS followed_id,
  ufollowed.username AS followed_name
FROM
  /* JOIN twice against users, once to get the follower and once to get the followed */
  user_follow 
  /* users aliased as ufollower to get the follower details */
  JOIN users ufollower ON ufollower.id = user_follow.follower
  /* users aliased as ufollowed to get the followed details */
  JOIN users ufollowed ON ufollowed.id = user_follow.followed
WHERE
  user_follow.follower = $p_id

ループでは、名前はで使用できますfollower_name, followed_name

while($apple = mysql_fetch_array($following)){
   // Be sure to wrap the name in htmlspecialchars() to encode characters that could break html.
   // This has the followed id in the href and the followed name in the link text...
   echo '<a href="'.$apple['followed_id'].'">+'.htmlspecialchars($apple['followed_name']) .'</a> ';
}
于 2012-10-14T21:36:24.303 に答える
0

それらを結合する必要があります。2つのIDの名前を個別に出力するため、同じテーブルを2回二重結合する必要があります。

SELECT 
    uf.follower, 
    uf.username AS followerUsername, 
    uf.followed, 
    u2.username AS followedUsername 
FROM 
    user_follow AS uf 
INNER JOIN 
    users AS u1 
ON 
    uf.follower = u1.userID
INNER JOIN
    users AS u2
ON
    uf.followed = u2.userID
WHERE
    follower = ?

SQLステートメントを作成する場合は、プリペアドステートメントまたはエスケープを使用してください。mysql_real_escape_string()SQLインジェクション攻撃からあなたを救うための呼び出し。

于 2012-10-14T21:40:15.630 に答える