Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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的MySQL查询,合并来自两个表的数据_Php_Mysql - Fatal编程技术网

来自PHP的MySQL查询,合并来自两个表的数据

来自PHP的MySQL查询,合并来自两个表的数据,php,mysql,Php,Mysql,我正在我的页面上使用一个跟踪系统,我需要只向用户显示他们跟踪的用户的帖子。我在mysql中有一个名为follow的表,其中包含user1\u id和user2\u id。如果id为34的用户跟随id为45的用户,则该用户将存储在该表中。所以我需要的是选择所有用户ID,然后从另一个表中查找他们的帖子。 我需要一些命令,这些命令将从表1中选择*,其中u_id=[用户id-s,他们遵循]。 我已经尝试过这样的方法: $id = $_SESSION['user_id']; $follow_query =

我正在我的页面上使用一个跟踪系统,我需要只向用户显示他们跟踪的用户的帖子。我在mysql中有一个名为
follow
的表,其中包含
user1\u id
user2\u id
。如果id为34的用户跟随id为45的用户,则该用户将存储在该表中。所以我需要的是选择所有用户ID,然后从另一个表中查找他们的帖子。 我需要一些命令,这些命令将
从表1中选择*,其中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的用户的帖子

$id = $_SESSION['user_id'];
#select ID of users who are following a particular user
$follow_query = mysql_query("SELECT user_two_id FROM follow WHERE user_one_id='{$id}'");
#create an array in which we will contain "home" of users
$homes = array();
while($follower_id = mysql_fetch_array($follow_query)){
    $query = mysql_query("SELECT home FROM matches WHERE u_id='{$follower_id}'");
    while ($home = mysql_fetch_array($follow_query)){
        $homes[] = $home;
    }
}
变化:

  • 传递到查询时,在PHP变量周围放置{}
  • 跟随第一个用户的用户的主页现在位于阵列主页中

$follow\u数组是您命名的数组。您实际上想要访问$follow\u array['user\u two\u id']

您应该使用一个
连接重新组合您的两个查询,以便将处理留给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);

转储内爆(“,”,数组映射('intval',$follow_array)),这样我们就知道了值-如果任何值不是
$follow_query
false,那么会有什么错误?我是否可以按m_id DESC添加WHERE date>date_SUB(现在(),间隔1周)顺序?谢谢,我认为这会起作用。。。再问一个问题。。我可以包括$limit='limit'($pn-1)*$itemsPerPage','.$itemsPerPage。。。我想这应该是这样的:$query=sprintf(“从匹配的m JOIN follow f ON m.u_id=f.user_two_id其中f.user_one_id='%d'和m.date>date_SUB(NOW(),INTERVAL 1 WEEK)ORDER BY m_id DESC”$limit,$id);我再次编辑,向您展示您可以向sprintf函数添加任意多的参数。看到了也非常感谢你,V!