PHP 'while' 循环或另一个 'if' 循环中的 'while' 语句?

标签 php mysql

我有一个返回 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);
?>

我错过了什么?我该怎么办?

::编辑::

我已将 mysql_query 更改为:

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 引入相关的数组?

最佳答案

我发现的一个问题是,您没有在外部 while 循环内部重置$arrayLC;因此,每个订单的代码都会附加到前一个订单的代码之后,无限循环。

if($OrdersToShip) {
    while ($info = mysql_fetch_array($OrdersToShip)) {

    $arrayLC = array(); // SHOULD BE IN HERE!

除此之外,当您让此代码运行时,您应该考虑这样一个事实:对于 N 个订单,此代码执行 N + 1 个查询(1 个查询用于获取订单,每个订单一个查询用于获取商品)。考虑到如果执行left outer join,您只需一个查询即可检索相同的信息,这是一种非常低效的方法。 。所以你的下一站应该是阅读 SQL joins以及它们如何帮助您检索关联数据。

关于PHP 'while' 循环或另一个 'if' 循环中的 'while' 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876319/

相关文章:

mysql - 重复超过 2 列

php - 在 jquery 中处理分页的问题

PHP 不解析双引号内的变量

php - Encoder->IsPasswordValid 必须实现接口(interface)\UserInterface

php - 如果 true 使用 foreach 循环,否则使用 while

javascript - 在 PHP 或 javascript 中将 ö é ü 等字符转换为 HTML 代码

mysql - 使用一个查询将数千个条目插入 MySQL

mysql - 如何从 SQL 中的两列中查找唯一对?

php - iPhone 应用程序用户标识符

php - 弃用 : mysql_connect(): ERROR