php - PHP 的 MySQL 查询结合两个表中的数据

标签 php mysql

我正在我的页面上开发一个关注系统,我需要只向用户显示他们关注的用户的帖子。我在 mysql 中有一个名为 follow 的表,其中包含 user1_iduser2_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);}

但它不起作用。

这是下表:

follow table

显示用户 33 正在关注用户 34 和用户 35。

这是存储我需要显示的数据的表:

other table

但我需要只向用户显示他所关注的用户的帖子,在本例中是 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/

相关文章:

mysql - 在不同列中显示联合结果 - mysql

mysql - 如何进行选择为嵌套的查询?

mysql - Doctrine - 加载带有法语字符的 YAML 固定装置

javascript - 获取 document.getElementsByClassName 的子类

php - 未使用$ _SESSION变量创建Docker项目

php - SuiteCRM:从 beforesave Hook 逻辑重定向到 editview

MySQL:案例陈述问题

php - SQL在将主键与where子句中的另一个值组合时返回空行

javascript - 如何区分jquery上使用codeigniter从mysql获取数据的两个数组

一个字段的 mysql 更新及其后续使用