我有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
作为数组,而是想将它全部放在一个查询中。这可能吗?
答案 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