簡體   English   中英

來自PHP的MySQL查詢結合了兩個表中的數據

[英]MySQL query from PHP combining data from two tables

我正在使用我頁面上的關注系統,我只需要向用戶顯示他們關注的用戶的帖子。 我在mysql中有一個名為follow的表,其中包含user1_iduser2_id 如果ID為34的用戶緊隨ID為45的用戶,則將其存儲在該表中。 因此,我需要的是選擇某人遵循的所有用戶ID,並從另一個表中查找其帖子。 我需要一些命令,在SELECT * FROM table1 WHERE u_id=[users id-s that they follow]. 我已經嘗試過這樣的事情:

$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_array是一個數組。 您實際上要訪問$ follow_array ['user_two_id']

您應該使用JOIN重新組合兩個查詢,以便將處理留給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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM