簡體   English   中英

PHP的“ while”循環還是另一個“ while”循環中的“ if”語句?

[英]PHP 'while' loop or 'if' statement in another 'while' loop?

我有一個返回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個獲取訂單,每個訂單獲取一個)。 考慮到如果執行左外部聯接 ,僅用一個查詢就可以檢索相同的信息,這是一種非常低效的處理方式。 因此,您的下一站應該是閱讀SQL連接以及它們如何幫助您檢索關聯的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM