我正在尝试显示来自2个不同SQL表(规范化数据库)的数据,并在HTML表格中并排显示数据。
我可以显示表A和表B中的数据,但是,我通过两个独立的while循环实现了这一点。我想将这些while循环合并为一个。
问题:我可以在while循环中有2个mysql_fetch_array()条件吗?
显示表A中的数据:
$result = mysql_query("SELECT * from ReportValues WHERE
ReportValues.ReportID = '$Report_Values'");
while ($myData = mysql_fetch_array($result, MYSQL_NUM))
{
echo "<tr>";
echo "<td>" . $myData[2] . "</td>";
echo "</tr>";
}
显示表B中的数据:
$result = mysql_query("SELECT * FROM Element WHERE Element.ElementsID
= (SELECT ElementsID FROM Template WHERE Template.TID = '$Temp')");
while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
echo "<td>" . $row[2] . "</td>";
echo "</tr>";
}
理想情况下,我正在努力实现这样的目标:
$result = mysql_query("SELECT * from ReportValues
WHERE ReportValues.ReportID = '$Report_Values'");
$result2 = mysql_query("SELECT * FROM Element
WHERE Element.ElementsID =
(SELECT ElementsID FROM Template
WHERE Template.TID = '$Temp'
)"
);
while ($myData = mysql_fetch_array($result, MYSQL_NUM) &&
$row = mysql_fetch_array($result2, MYSQL_NUM))
{
echo "<tr>";
echo "<td>" . $myData[2] . "</td>";
echo "<td>" . $row[2] . "</td>";
echo "</tr>";
}
提前致谢。
编辑: 感谢您的所有回复,但是,我无法实现所建议的内容。我的工作包括创建数组,并为每个元素(数据[$ i]和行[$ i])我刚刚将它们添加到2个独立的数组中。我仍然使用两个单独的while循环。可能是低效/差的代码,但我让它工作,哈。
答案 0 :(得分:1)
您可以,但是如果每个查询中返回的行数不同,那么当行数较少的行中没有更多结果时,循环将停止:
while ($myData = mysql_fetch_array($result, MYSQL_NUM) &&
$row = mysql_fetch_array($result2, MYSQL_NUM))
{
echo "<tr>";
echo "<td>" . $myData[2] . "</td>";
echo "<td>" . $row[2] . "</td>";
echo "</tr>";
}
要为大多数行保留循环,可以使用OR
,但需要检查变量是否已设置:
while ($myData = mysql_fetch_array($result, MYSQL_NUM) ||
$row = mysql_fetch_array($result2, MYSQL_NUM))
{
echo "<tr>";
echo "<td>" . isset($myData[2]) ? $myData[2] : '' . "</td>";
echo "<td>" . isset($row[2]) ? $myData[2] : '' . "</td>";
echo "</tr>";
}