我有一个返回 HTML 表的 PHP/MySQL 查询,但我被困在需要进行第二个查询的部分while
循环该查询。我不知道从这里该去哪里。我尝试了几种不同的方法。
我希望它循环并给我第一组数据,然后使用“Order_ID”并获取第二组数据并将第二组数据放入第一个循环中,然后再次执行此操作。
这就是我所拥有的...
<?php
$arrayLC = array();
$OrdersToShip = mysql_query("
SELECT *
FROM Orders o
WHERE o.LotCoded = 0 ORDER BY o.Order_ID");
if ($OrdersToShip) {
while ($info = mysql_fetch_array($OrdersToShip))
{
$Order_ID = $info['Order_ID'];
$Customer_ID = $info['Customer_ID'];
$OrderDate = $info['OrderDate'];
$lotCodes = mysql_query("SELECT lotCode, Qty FROM `OrdersLotCodes` WHERE `Order_ID` = '".$Order_ID."'");
if($lotCodes) {
while ($info = mysql_fetch_array($lotCodes))
{
$lotCode = $info['lotCode'];
$Qty = $info['Qty'];
array_push($arrayLC, $lotCode, $Qty);
}
}
echo '<tr class="OLine">
<td><input type="button" class="button viewThis" value="VIEW"></td>
<td>'.$Order_ID.'</td>
<td>'.$Customer_ID.'</td>
<td>'.$OrderDate.'</td>
<td>'.print_r($arrayLC).'</td>
</tr>';
}
}
else {
echo "encountered an error.".mysql_error();
}
mysql_close($conn);
?>
我缺少什么?我应该怎么办?
::EDIT::
我已经改变了mysql_query
to:
SELECT o.Order_ID, o.Customer_ID, o.OrderDate, olc.lotCode, olc.qty
FROM Orders o
LEFT JOIN OrdersLotCodes olc ON o.Order_ID = olc.Order_ID
WHERE o.LotCoded = 0 ORDER BY o.Order_ID
现在,我如何使用 OrderLotCodes 获取输出并将它们放入要在表中打印的数组中?我如何将它们放入一个数组中,然后通过 Order_ID 引入相关的数组?
我发现的一个问题是你没有重置$arrayLC
inside外层while
环形;因此,每个订单的代码都会附加到前一个订单的代码之后,无限循环。
if($OrdersToShip) {
while ($info = mysql_fetch_array($OrdersToShip)) {
$arrayLC = array(); // SHOULD BE IN HERE!
除此之外,当您让此代码工作时,您应该考虑这样一个事实:对于 N 个订单,此代码执行 N + 1 个查询(1 个查询用于获取订单,每个订单执行一个查询以获取商品)。考虑到您只需使用以下命令即可检索相同的信息,这是一种非常低效的做事方式one查询是否执行左外连接 http://en.wikipedia.org/wiki/Join_%28SQL%29#Left_outer_join。所以你的下一站应该是阅读SQL 连接 http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html以及它们如何帮助您检索相关数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)