【发布时间】:2016-04-08 00:51:25
【问题描述】:
我正在尝试显示来自 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>";
}
提前致谢。
编辑: 感谢您的所有答复,但是,我无法实施建议的内容。我的工作包括创建数组,对于每个元素(data[$i] 和 row[$i]),我只是将它们添加到 2 个单独的数组中。我仍然使用了两个单独的 while 循环。可能是低效/糟糕的代码,但我让它工作了,哈。
【问题讨论】:
-
嗯,我不知道,对你有用吗?
-
可以,但是如果每个查询中返回的行数不同,那么当行数较少的查询中没有更多结果时,循环将停止。
-
强烈建议您从
mysql_函数切换到 MySQLi 或 PDO 等驱动程序,因为mysql_函数自 PHP 5.5.0 起已弃用,并在 PHP 7.0.0 中完全删除。 -
似乎您可以使用
||而不是&&来防止@AbraCadaver 所指的内容。然后,您必须在打印之前检查是否设置了$myData和$row。 -
用我的理想代码,它只显示 $row[] 值,完全错过了条件的前半部分(即 $myData[])
标签: php mysql while-loop