簡體   English   中英

使用PHP while循環顯示來自多個表的MySQL數據

[英]Displaying MySQL data from several tables using PHP while loops

經過幾周的研究,我無法解決此問題。 我簡化了表結構和代碼,希望可以簡化此過程。

我有兩個MySQL表; “塊”和“文件”。

“塊”表具有列bwblock_id,bwblock_year和bwblock_name。

“文件”表具有列file_id,file_name和bwblock_id。

用戶首先創建一個塊。 然后他們可以創建一個文件,並將其分配給一個塊(bwblock_id是索引列)。

然后,我想顯示如下內容:

塊名稱1(來自bwblock_name列中的數據)

[未分配文件,僅顯示塊名稱]

塊名#2

分配給塊#2的第一個文件

分配給塊#2的第二個文件

塊名#3

分配給第3塊的第一個文件

分配給第3塊的第二個文件

等等...

我下面的代碼顯示了我需要的所有內容,但列出了第一個塊下的文件,而不是它實際所屬的第三個塊。 如何分配文件以在正確的塊下顯示? 顯然,它與將block.bwblock_id和files.bwblock_id排列在一起有關,但我只是不知道那是什么。

我已經嘗試了LEFT JOIN語句,但是下面的MySQL是我得到所需的最接近的MySQL。

我首先選擇塊數據:

$query_RS_Blocks = "SELECT * FROM blocks WHERE bwblock_year = $variable ORDER BY bwblock_id ASC"
$row_RS_Blocks = mysql_fetch_assoc($RS_Blocks);

然后,選擇適用的文件:

"SELECT * FROM files WHERE bwblock_id IN (SELECT bwblock_id FROM blocks WHERE bwblock_year = $variable) ORDER BY file_name ASC"
$row_RS_Files = mysql_fetch_assoc($RS_Files);

我精簡的PHP顯示代碼是:

do {
echo $row_RS_Block['block_name']; 
do {
 echo $row_RS_Files['file_name'];
   } 
while ($row_RS_Files= mysql_fetch_assoc($RS_Files));
          }
while ($row_RS_Blocks = mysql_fetch_assoc($RS_Blocks));

我也嘗試將最后一行更改為:

while (($row_RS_Blocks = mysql_fetch_assoc($RS_Blocks)) && ($row_RS_Blocks['bwblock_id'] == $row_RS_Files['bwblock_id']));

然后,我將第一個文件插入第一個塊下,將第二個文件插入第二個塊下。 (請注意,在該特定文件查詢中僅返回了兩個文件。我想它將為每個塊無限分配一個文件。)

我的頭腦現在有些糊塗,但是如果我省略了任何必要的信息,請告知我,我將盡快進行修改。

您可以嘗試這種選擇嗎? 讓我知道是否可行。

SELECT b.bwblock_id, b.bwblock_year, b.bwblock_name, f.file_id, f.file_name 
FROM blocks AS b
LEFT JOIN files as f
ON b.bwblock_id=f.bwblock_id;

暫無
暫無

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

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