PHP循环未正确显示

PHP循环未正确显示,php,loops,Php,Loops,我需要一些关于循环问题的帮助。对于下面的示例代码,我有两个Mysql表: tblDepRatesCats: ID header left_text center_text right_text header_order ------ tblRates_balance: id depratecat MinBalance InterestRate APY suborder tblDepRatesCats.ID=tblRatesBalance.depratecat。对于t

我需要一些关于循环问题的帮助。对于下面的示例代码,我有两个Mysql表:

tblDepRatesCats:

ID 
header 
left_text 
center_text 
right_text 
header_order

------

tblRates_balance:

id 
depratecat 
MinBalance 
InterestRate 
APY 
suborder
tblDepRatesCats.ID=tblRatesBalance.depratecat
。对于
tblDepRatesCats
中的每一行,在
tblRates\u balance
中可能有0行或1行或更多行

我试图显示查询这些表的结果,以便它显示每个
tblDepRatesCats
数据以及相应的
tblRates\u balance
数据,但它显示的是
tblDepRatesCats
,因此如果
tblDepRatesCats
行有3个
tblDepRatesCats
行与其关联,
tblDepRatesCats
行重复3次,其中一行为
tblDepRatesCats
'

正如您在下面看到的,“超级支票账户”显示了3次,但我希望它只显示一次,在一个标题下列出了最低余额和apy的3个结果

现在支票账户每天的最低余额,以赚取每年APY 百分比收益率1000美元10

Super NOW支票账户每日最低余额以赚取APY年度 百分比收益率%$22222

Super NOW支票账户每日最低余额以赚取APY年度 百分比收益率%$2100 25

Super NOW支票账户每日最低余额以赚取APY年度 收益率%$2000 20

货币市场账户每年赚取APY的最低每日余额 百分比收益率%$3000 30

下面是我的测试代码。任何帮助都将不胜感激

$result = mysql_query('SELECT tblDepRatesCats.*, tblRates_balance.* FROM tblDepRatesCats JOIN tblRates_balance ON tblDepRatesCats.ID = tblRates_balance.depratecat ORDER BY tblDepRatesCats.header_order, tblRates_balance.suborder;');

while ($row = mysql_fetch_assoc($result)) 
{
 echo ("<table width=\"98%\" border=\"0\" bgcolor:\"#ffffff\"><tr><td>");
 echo ("" . $row["header"] . " <br>");
 echo ("" . $row["left_text"] . "&nbsp;&nbsp;");
 echo ("" . $row["right_text"] . "");
 echo ("</tr></td>");
 // &nbsp temporarily added
 echo ("<tr><td>");
 echo ("" . $row["MinBalance"] . "");
 echo ("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
 echo ("" . $row["InterestRate"] . " <br><br>");
 echo ("</tr></td>");
}
$result=mysql\u query('SELECT tblDepRatesCats.*,tblRates\u balance.*FROM tblDepRatesCats JOIN tblRates\u balance ON tblDepRatesCats.ID=tblRates\u balance.departratecat ORDER BY tblDepRatesCats.header\u ORDER,tblRates\u balance.suborder;');
while($row=mysql\u fetch\u assoc($result))
{
回声(“”);
echo(“$row[“header”]。”
”); 回声(“$row[“left_text”]。”); 回声(“$row[“right_text”]。”); 回声(“”); //临时添加 回声(“”); echo(“$row[“MinBalance”]。”); 回声(“”); echo(“$row[“InterestRate”]。”

”; 回声(“”); }
只需将不希望每次重复的输出移到while循环外部即可

echo ("<table width=\"98%\" border=\"0\" bgcolor:\"#ffffff\"><tr><td>");
echo ("" . $row["header"] . " <br>");
echo ("" . $row["left_text"] . "&nbsp;&nbsp;");
echo ("" . $row["right_text"] . "");
echo ("</tr></td>");
echo ("<tr><td>");
while ($row = mysql_fetch_assoc($result)) 
{
    //&nbsp temporarily added
    echo ("" . $row["MinBalance"] . "");
    echo ("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
    echo ("" . $row["InterestRate"] . " <br><br>");
}
echo ("</tr></td>");
echo(“”);
echo(“$row[“header”]。”
”); 回声(“$row[“left_text”]。”); 回声(“$row[“right_text”]。”); 回声(“”); 回声(“”); while($row=mysql\u fetch\u assoc($result)) { //&暂时增加 echo(“$row[“MinBalance”]。”); 回声(“”); echo(“$row[“InterestRate”]。”

”; } 回声(“”);
如果我对您的理解正确,那么您需要做的就是转换代码:

$result = mysql_query('SELECT tblDepRatesCats.*, tblRates_balance.* FROM tblDepRatesCats JOIN tblRates_balance ON tblDepRatesCats.ID = tblRates_balance.depratecat ORDER BY tblDepRatesCats.header_order, tblRates_balance.suborder;');
$new_result = array();
while ($row = mysql_fetch_assoc($result)) 
{
  $new_result[$row["header"]][] = $row;
}

foreach($new_result as $new_row){
  echo ("<table width=\"98%\" border=\"0\" bgcolor:\"#ffffff\"><tr><td>");
  echo ("" . $new_row[0]["header"] . " <br>");
  echo ("" . $new_row[0]["left_text"] . "&nbsp;&nbsp;");
  echo ("" . $new_row[0]["right_text"] . "");
  echo ("</tr></td>");

  foreach($new_row as $row){
   // &nbsp temporarily added
   echo ("<tr><td>");
   echo ("" . $row["MinBalance"] . "");
   echo("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
   echo ("" . $row["InterestRate"] . " <br><br>");
   echo ("</tr></td>");
  }

  //also, dont forget to close the table:
  echo "</table>";
}
$result=mysql\u query('SELECT tblDepRatesCats.*,tblRates\u balance.*FROM tblDepRatesCats JOIN tblRates\u balance ON tblDepRatesCats.ID=tblRates\u balance.departratecat ORDER BY tblDepRatesCats.header\u ORDER,tblRates\u balance.suborder;');
$new_result=array();
while($row=mysql\u fetch\u assoc($result))
{
$new_result[$row[“header”][]=$row;
}
foreach($new\u结果为$new\u行){
回声(“”);
echo(“$new_行[0][“头”]。”
”); echo(“$new_row[0][“left_text”]。”); echo(“$new_row[0][“right_text”]。”); 回声(“”); foreach($新的行作为$行){ //临时添加 回声(“”); echo(“$row[“MinBalance”]。”); 回声(“”); echo(“$row[“InterestRate”]。”

”; 回声(“”); } //此外,别忘了关上桌子: 回声“; }
每次循环时,代码都会启动一个新表


编辑以避免警告。尽管找到一种根本不需要调用
$result[0][“xxxxx”]
的方法可能更有意义。也许一个静态变量会更容易,不过您可能需要第二个查询来获取这些值。如果表之间可以有0个链接,这取决于是否使用左连接。使用join only将导致从结果中删除余额表中没有数据的行。

您应该停止使用Mysql,它已被折旧。检查MySqli或PDO。在查询结果中,记录重复。你必须检查你的查询我试图移动while循环,但是现在我发现一个错误重复了3次:注意:未定义的变量:第10..11..12行中的行。我需要另一个while循环吗?我需要这样显示结果:
现在支票账户最低每日余额以赚取APY年百分比收益率$1000 10超级现在支票账户最低每日余额以赚取APY年百分比收益率%$22222$2100 25$2000 20货币市场账户最低每日余额,以赚取APY年百分比收益率%$3000和这些编辑,抱歉的错误。。。希望我一直都能得到它们,抱歉,我想我没有很好地解释我自己。我一直在尝试编辑我的答案,但网站一直在切断我的连接。对于我的测试,结果现在应该显示支票帐户,下面有一行。Super现在应该显示3行。货币市场应该显示一排。