0

おそらくこのクエリに関連する次の MySQL テーブルがあります。

Table: user_follow
Columns:   |  Type:
-----------|---------
id         |  INT(11)
follower   |  INT(11)
user       |  INT(11)
subscribed |  INT(11)

ID はフォローの ID、フォロワーはユーザーをフォローしている人、サブスクライブはフォローされたときの ID です。フォロワーとユーザーは、users テーブル内のユーザーの ID になります。

Table: users
Columns:  |  Type:
----------|---------
id        |  INT(11)
username  |  INT(11)

これは完全な users テーブルではありませんが、この MySQL クエリが何を行っていようと、これで十分なはずです。users テーブルの ID はユーザーの ID であり、username はユーザー名です。だからここに私がそれが何をしているのかを理解しようとしているクエリがあります。ユーザーのデータベースからユーザー名を取得しようとしていると思います:

SELECT `ufollower`.`id` AS follower_id, `ufollower`.`username` AS follower_name,
     `ufollowed`.`id` AS user_id, `ufollowed`.`username` AS user_name
FROM `user_follow`
JOIN users ufollower ON `ufollower`.`id` = `user_follow`.`follower`
JOIN users ufollowed ON `ufollowed`.`id` = `user_follow`.`user`
WHERE `user_follow`.`user` = :p_id

私が実行しようとしている完全なコードはこれです(クエリを含む):

//Get people who this person is following
$following = $db->prepare("SELECT `ufollower`.`id` AS follower_id, `ufollower`.`username` AS follower_name, `ufollowed`.`id` AS user_id, `ufollowed`.`username` AS user_name FROM `user_follow` JOIN users ufollower ON `ufollower`.`id` = `user_follow`.`follower` JOIN users ufollowed ON `ufollowed`.`id` = `user_follow`.`user` WHERE `user_follow`.`user` = :p_id");
$following->bindValue(":p_id",$p_id,PDO::PARAM_STR);
$following->execute();
$following = $following->fetchAll(PDO::FETCH_ASSOC);
var_dump($following);

//If I do $following = $following->fetch(); and var_dump that, it returns "bool(false)" which I learned the other day that it couldn't do the query or there were no results found or something

また、私はMySQLの専門家ではないので、うまくいくかもしれない答えを提供できれば、それは素晴らしいことです. 簡単なクエリは実行できますが、テーブルの結合に関しては、何が起こっているのかわかりません。

4

1 に答える 1