我正在尝试找到一种更好的方式来显示我的实体关系。我的数据库由 3 个表组成:members、fees 和 Fees_has_members。
一名成员(member)可以收取多项费用,反之亦然。问题是当我想显示所有成员(member)及其相应费用时,我的 while 循环会遍历所有实体并在每次循环时显示所有信息。
循环显示如下:
Member A
Fee B
200 $
Member A
Fee C
230 $
Member A
Fee B
200 $
我想显示一次成员(member)以及所有相关费用。
代码:
<?php
mysql_connect("#######", "########", "######") or die(mysql_error());
mysql_select_db("#####") or die(mysql_error());
?>
<h3>Members:</h3>
<?php
$result = mysql_query("SELECT boder_boder_id, medlemmer_medlemmer_id, medlemmer_navn, medlemmer_id, boder_navn, boder_id, boder_pris FROM boder_has_medlemmer, medlemmer, boder WHERE boder_boder_id = boder_id AND medlemmer_medlemmer_id = medlemmer_id");
?>
<?php
if (mysql_num_rows($result) == 0)
echo "Query returned 0 rows";
?>
<?php
$samlet = 0;
while($row = mysql_fetch_array($result))
{ ?>
<p>
<?php
echo $row[medlemmer_navn].'<br>';
echo $row[boder_navn].'<br>';
echo $row[boder_pris].' kr.';
$samlet += $row[boder_pris];
?>
</p>
我知道我可以更改 MySQL 查询以包含特定的成员(member)名称,但随后我必须运行 30 个查询才能显示所有成员(member)及其费用。
我希望我已经说清楚了。
有什么建议吗?
最佳答案
你对每个成员进行查询的想法很愚蠢:D
试试这个。
<?php
mysql_connect('#######', '########', '#######') or die(mysql_error());
mysql_select_db('#####') or die(mysql_error());
echo '<h3>Members:</h3>';
$result = mysql_query('SELECT `boder_boder_id`, `medlemmer_medlemmer_id`, `medlemmer_navn`, `medlemmer_id`, `boder_navn`, `boder_id`, `boder_pris` FROM `boder_has_medlemmer`, `medlemmer`, `boder` WHERE `boder_boder_id` = `boder_id` AND `medlemmer_medlemmer_id` = `medlemmer_id`;');
if (!mysql_num_rows($result))
{
echo 'Query returned 0 rows';
}
$samlet = 0;
$medlemmers = array();
while($row = mysql_fetch_array($result))
{
$medlemmers[$row['medlemmer_navn']][] = $row;
}
foreach($medlemmers as $navn => $medlemmer)
{
echo '<p>';
echo $navn . '<br />';
foreach($medlemmer as $row)
{
echo $row['boder_navn'] . '<br />';
echo $row['boder_pris'] . ' kr.';
$samlet += $row['boder_pris'];
}
echo '</p>';
}
尚未经过测试,但应该朝正确的方向发展 ^^
关于PHP MySQL 多个查询合而为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761727/