多维数组输出 php mysql


Multidimensional Array output php mysql

想知道是否有人可以帮助我如何构建多维数组输出,已经坚持了很长时间了。我使用 PHP 和 MySQL 数据库,我有 3 个表格"奖杯"、"获奖者"和"链接表"(完整结构如下)我需要显示所有奖杯数据(名称描述图像)和下表,显示所有以前的奖杯获奖者;

这是所需的输出...

Trophy1Name                    [Trophy1Image]
Trophy1Description
Year FirstName SecondName

我需要它来循环 DB 中的所有其他奖杯(总共 9 个),因此为什么我需要数组,我的问题是,我可以循环显示所有奖杯及其图像和描述,但我无法弄清楚如何将所有以前的获奖者添加到表中。

最接近的 iv 是循环每个获胜者,但当我有超过 300 个不同的获胜者时,这也一遍又一遍地重复奖杯细节并不完全理想。

这是我的 mysql 表结构和连接:

Trophies     Winners     LinkTable
--------    ---------    ---------
TrophyID     WinnerID    LT_WinnerID
TrophyName   FirstName   LT_TrophyID
Description  SecondName
Image         Year

加入:

$trophylist = mysql_query("
SELECT TrophyID, TrophyName, Description, Image, WinnerID, FirstName, SecondName, Year 
FROM LinkTable
INNER JOIN Winners ON (LinkTable.LT_WinnerID = Winners.WinnerID) 
INNER JOIN Trophies ON (LinkTable.LT_TrophyID = Trophies.TrophyID)");

这听起来不像是一个查询问题。听起来更像是显示问题。数据库将自然返回奖杯的所有获胜者,这要求结果集在每条记录中重复该奖杯的名称。由您来编写PHP代码来正确解释它。

例如,在伪代码中:

$prev_trophy = null;
while($row = fetch_from_db($query_result)) {
   if ($row['TrophyID'] != $prev_trophy) {
      ... got a new trophy, so output trophy header stuff here
      $prev_trophy = $row['TrophyID'];
   }
   ... output winner information
}

只要您的查询中有适当的 order by 子句,上述代码样式就会输出奖杯的详细信息一次作为标头。对于同一奖杯的后续记录,将仅输出获胜者信息