【发布时间】:2014-07-13 03:30:27
【问题描述】:
首先,这将是相当漫长和复杂的。所以,如果你通读它,谢谢。
所以我在 PHP 中有一个关注和发布系统。所以我可以关注Alex,我会在主墙上看到亚历克斯的帖子以及我的帖子。如果我取消关注他,我就不会看到他的帖子。这就是查询的样子
SELECT *
FROM posts
WHERE post_user IN ( SELECT follow_from
FROM followers
WHERE follow_to = :user
OR follow_from = :user )
这会从您关注的人那里获取帖子。威尔斯这就是它应该做的。这是帖子的样子
+----+-----------+---------+------------------------+--------------+------------+
| id | post_user | post_ip | post_date | post_content | post_likes |
+----+-----------+---------+------------------------+--------------+------------+
| 40 | idris | ::1 | 07/09/2014 11:19:47 pm | I like food | 0 |
+----+-----------+---------+------------------------+--------------+------------+
现在说Scott,它是另一个用户,登录。他走到他的墙上,他可以看到我的帖子,即使他没有关注我。这就是我遇到的问题。这是followers 表
+-----+-------------+-----------+
| id | follow_from | follow_to |
+-----+-------------+-----------+
| 358 | idris | scott |
+-----+-------------+-----------+
当我看我的墙时,我也希望看到他的帖子。但我什么也没看到(当数据库中有帖子时)。所以基本上我的问题是,为什么Scott 会在他的墙上看到我的帖子,即使他没有关注我。
我有很多代码,但我会尝试在重要部分上发布
我如何运行查询
$qry = $con->prepare("SELECT *
FROM posts
WHERE post_user IN ( SELECT follow_from
FROM followers
WHERE follow_to = :user
OR follow_from = :user )");
$qry->bindValue(':user', $username, PDO::PARAM_STR);
$qry->execute();
我如何检查用户是否关注
if($_SESSION['loggedIn'] == true){
$result1 = $con->prepare("SELECT *
FROM followers
WHERE follow_from = :user
AND follow_to = :post_id");
$result1->bindParam(':user', $username);
$result1->bindParam(':post_id', $username);
$result1->execute();
$reprint = $result1->fetch(PDO::FETCH_ASSOC);
}
if($reprint > 1){
$usr_flw = true;
}
else{
$usr_flw = false;
}
最后我如何回复帖子
$posts = array();
while($row = $qry->fetch(PDO::FETCH_ASSOC)){
$posts[] = array(
'post_user' => $row['post_user'],
'id' => $row['id'],
'post_date' => $row['post_date'],
'post_likes' => $row['post_likes'],
'post_content' => $row['post_content']
);
}
【问题讨论】:
-
你能解释一下 follow_to 和 follow_from 吗?此外,在您的示例中,似乎 Scott 是数据库中的那个,所以通常他应该看到它。