只有一个查询而不是两个

时间:2014-05-01 13:39:58

标签: php mysql

我有2个表,一个叫post,一个叫followers。两个表都有一行称为userID。我想只显示该人关注的人的帖子。我尝试使用一个MySQL查询,但它根本不工作。

现在,我正在使用这样的解决方法:

$getFollowing = mysqli_query($db, "SELECT * FROM followers WHERE userID = '$myuserID'");
while($row = mysqli_fetch_object($getFollowing))
{
    $FollowingArray[] = $row->followsID;
}
    if (is_null($FollowingArray)) { 
    // not following someone
    } 
    else {
    $following = implode(',', $FollowingArray); 
    }


$getPosts = mysqli_query($db, "SELECT * FROM posts WHERE userID IN($following) ORDER BY postDate DESC");

正如您可能想象的那样,我只想对数据库进行一次调用。因此,我没有调用接收$following作为数组,而是想将它全部放在一个查询中。这可能吗?

1 个答案:

答案 0 :(得分:3)

使用SQL JOIN查询来完成此任务。

假设$ myuserID应该是一个整数,我们可以通过将其转换为整数来逃避它,以避免SQL注入。

尝试阅读this wikipedia article并确保您理解它。例如,SQL注入可用于删除数据库以及许多其他令人讨厌的东西。

这样的事情:

PHP代码:

$escapedmyuserID = (int)$myuserID; // make sure we don't get any nasty SQL-injections

然后,sql查询:

SELECT *
FROM followers
  LEFT JOIN posts ON followers.someColumn = posts.someColumn
WHERE followers.userID = '$escapedmyuserID'
ORDER BY posts.postDate DESC