gpt4 book ai didi

php - 使用 PHP while 循环显示多个表中的 MySQL 数据

转载 作者:行者123 更新时间:2023-11-30 00:26:31 25 4
gpt4 key购买 nike

经过几周的研究,我还没能解决这个问题。我简化了表结构和代码,希望能让这变得更容易。

我有两个 MySQL 表; “ block ”和"file"。

“ block ”表包含列 bwblock_id、bwblock_year 和 bwblock_name。

"file"表包含 file_id、file_name 和 bwblock_id 列。

用户首先创建一个 block 。然后他们可以创建一个文件,并将其分配给一个 block (bwblock_id 是索引列)。

然后我想显示这样的内容:

block 名称#1(来自 bwblock_name 列的数据)

[未分配文件,仅显示 block 名称]

区 block 名称#2

分配给 block #2 的第一个文件

分配给 block #2 的第二个文件

区 block 名称#3

分配给 block #3 的第一个文件

分配给 block #3 的第二个文件

等等...

下面的代码显示了我需要的所有内容,但列出了第一个 block 下的文件,而不是它实际所属的第三个 block 。如何分配文件以显示在正确的 block 下?它显然与排列 block.bwblock_id 和 files.bwblock_id 有关,但我就是不知道那是什么。

我尝试过 LEFT JOIN 语句,但下面的 MySQL 是最接近我想要的。

我首先选择 block 数据:

$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']));

然后我将第一个文件插入到第一个 block 下,将第二个文件插入到第二个 block 下。 (请注意,该特定文件查询中仅返回两个文件。我想它会无限地为每个 block 分配一个文件。)

我现在脑子很乱,但如果我遗漏了任何必要的信息,请告知,我会尽快修改。

最佳答案

你能尝试这个选择吗?让我知道它是否有效。

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;

关于php - 使用 PHP while 循环显示多个表中的 MySQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22829585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com