Php 返回未跟踪用户结果的查询
首先,这将是相当长和复杂的。所以如果你通读一遍,谢谢 所以我有一个PHP的follow-and-post系统。所以我可以跟随Alex,我会看到Alex的帖子,以及我在主墙上的帖子。如果我不关注他,我就看不到他的帖子了。这就是那个查询的样子Php 返回未跟踪用户结果的查询,php,mysql,sql,database,Php,Mysql,Sql,Database,首先,这将是相当长和复杂的。所以如果你通读一遍,谢谢 所以我有一个PHP的follow-and-post系统。所以我可以跟随Alex,我会看到Alex的帖子,以及我在主墙上的帖子。如果我不关注他,我就看不到他的帖子了。这就是那个查询的样子 SELECT * FROM posts WHERE post_user IN ( SELECT follow_from FROM followers WHERE fol
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登录。他走到墙边,可以看到我的帖子,尽管他没有跟着我。这就是我面临的问题。这是追随者
表
+-----+-------------+-----------+
| id | follow_from | follow_to |
+-----+-------------+-----------+
| 358 | idris | scott |
+-----+-------------+-----------+
当我看着我的墙时,我也希望看到他的帖子。但我什么也看不到(当DB中有帖子时)。所以本质上我的问题是,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_from是follower,follow_to是followerd用户,则子查询应如下所示:
( SELECT follow_to FROM followers WHERE follow_from = :user )
这将返回被提供的用户跟踪的用户。请尝试以下操作:
SELECT * FROM posts WHERE post_user IN ( SELECT follow_to FROM followers WHERE follow_from = :user) OR post_user = :user
你能解释一下follow_to和follow_from吗?此外,在您的示例中,Scott似乎是DB中的一个,因此通常他应该看到它。是的,但他也需要in或in之外的来获取自己的帖子。@Bob对于这个特定查询,关于自己的帖子没有明确的意义,但如果是这样,您的答案就更完整了:)