我正在我的页面上开发一个关注系统,我需要只向用户显示他们关注的用户的帖子。我在 mysql 中有一个名为 follow
的表,其中包含 user1_id
和 user2_id
。如果 id 为 34 的用户正在关注 id 为 45 的用户,则会将其存储在该表中。所以我需要的是选择某人关注的所有用户 ID 并从另一个表中找到他们的帖子。
我需要一些命令来 SELECT * FROM table1 WHERE u_id=[他们关注的用户 id-s]。
我已经尝试过这样的事情:
$id = $_SESSION['user_id'];
$follow_query = mysql_query("SELECT user_two_id FROM follow WHERE user_one_id=$id");
while($follow_array = mysql_fetch_array($follow_query)){
$sql = mysql_query('SELECT home FROM `matches` WHERE `u_id` IN (' . implode(',',array_map('intval', $follow_array)) . ')');
$sql_array = mysql_fetch_array($sql);}
但它不起作用。
这是下表:
显示用户 33 正在关注用户 34 和用户 35。
这是存储我需要显示的数据的表:
但我需要只向用户显示他所关注的用户的帖子,在本例中是 ID 为 34 和 35 的用户的帖子。
最佳答案
您应该使用 JOIN
重新组合 2 个查询,以便将处理留给 MySQL。
$id = $_SESSION['user_id'];
$offset = ($pn - 1) * $itemsPerPage;
$query = sprintf("SELECT home, u_id FROM matches m
JOIN follow f ON m.u_id = f.user_two_id
WHERE f.user_one_id = '%d'
AND m.date > DATE_SUB(NOW(), INTERVAL 1 WEEK)
ORDER BY m_id DESC
LIMIT %d,%d", $id, $offset, $itemsPerPage);
$result = mysql_query($query);
if (!$result) {
$message = 'Invalid query : ' . mysql_error() . "\n";
$message .= 'Whole query: : ' . $query;
die($message);
}
while ($row = mysql_fetch_assoc($result)) {
echo $row['home'];
echo $row['u_id'];
}
mysql_free_result($result);
关于php - PHP 的 MySQL 查询结合两个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23035910/