Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回未跟踪用户结果的查询_Php_Mysql_Sql_Database - Fatal编程技术网

Php 返回未跟踪用户结果的查询

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

首先,这将是相当长和复杂的。所以如果你通读一遍,谢谢

所以我有一个PHP的follow-and-post系统。所以我可以跟随Alex,我会看到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登录。他走到墙边,可以看到我的帖子,尽管他没有跟着我。这就是我面临的问题。这是
追随者

+-----+-------------+-----------+
| 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对于这个特定查询,关于自己的帖子没有明确的意义,但如果是这样,您的答案就更完整了:)