簡體   English   中英

在While循環內執行PHP While循環

[英]Doing a PHP While Loop Inside A While Loop

我正在嘗試在另一個php while循環內做一個php while循環while但是當我進入第二個循環時,它不會回到第一個循環並再次重新循環。這是我正在使用的代碼:

數據庫連接字符串在單獨的模塊中。 第一個while循環應該循環兩次,但是我認為當它到達第二個數據庫時會發生什么, while該循環返回正數,並且會影響第一個循環,因此我只能從第一個循環中獲得1個循環。 有人可以告訴我如何避免此問題嗎?

這是數據庫中的以下兩個循環:

while($row = $result->fetch_assoc()) {

    // Show/Hide Regions:

    error_reporting(-1);
    ini_set('display_errors', 'On');

    //Access our class.
    $db_Class = new db_Class;
    $conn = ($db_Class->db_conn());

    $sql = "SELECT id, region FROM tbl_region;";
    $result = $conn->query($sql);

          if ($result->num_rows > 0) {
        // output data of each row
        $counter = 0; //Set count to 1
        while($row = $result->fetch_assoc()) {
            $counter++; //Increment counter by 1's
            $rID = $row["id"];
            ?>
                Output Region Here!

               <?php 

            //Output companies for this region.

            $sql = "SELECT
                    tbl_company.company_name,
                    tbl_company.group_number,
                    tbl_region.region
                    FROM
                    tbl_region
                    INNER JOIN tbl_company ON tbl_company.region_id = tbl_region.id
                    WHERE
                    $rID = tbl_company.region_id
                    ORDER BY
                    tbl_company.company_name ASC
                    ";
            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
                // output data of each row
                while($row = $result->fetch_assoc()) {

                    echo $row["company_name"]."<br>";

                    }
                }
            echo "A";
            echo '</div>';
            }
            } ?>

用任何其他名稱更改內部循環$ row和$ result ..例如,我在這里完成了$ rowInner和$ resultInner。

<?php 
while($row = $result->fetch_assoc()) {
    if ($result->num_rows > 0) {
        $counter = 0; //Set count to 1
        while($row = $result->fetch_assoc()) {
            $counter++; //Increment counter by 1's
            $rID = $row["id"];
            ?>
                Output Region Here!

            <?php 
            $sql = "SELECT
                    tbl_company.company_name,
                    tbl_company.group_number,
                    tbl_region.region
                    FROM
                    tbl_region
                    INNER JOIN tbl_company ON tbl_company.region_id = tbl_region.id
                    WHERE
                    $rID = tbl_company.region_id
                    ORDER BY
                    tbl_company.company_name ASC
                    ";
            $resultInner = $conn->query($sql);
            if ($resultInner->num_rows > 0) {
                while($rowInner = $resultInner->fetch_assoc()) { // Change $row to $rowInner
                    echo $rowInner["company_name"]."<br>";

                }
            }
            echo "A";
            echo '</div>';
        }
    }
} 
?>

您應該為$result使用不同的變量,例如$result2 for 2 while循環。 那就是造成沖突的原因。

您覆蓋了第一個$ row / $ result和第二個$ row / $ result。 對於第二組結果,請嘗試使用其他名稱。

// Show/Hide Regions:

error_reporting(-1);
ini_set('display_errors', 'On');

//Access our class.
$db_Class = new db_Class;
$conn = ($db_Class->db_conn());

$sql = "SELECT id, region FROM tbl_region;";
$result = 

$conn->query($sql);

  if ($result->num_rows > 0) {
// output data of each row
$counter = 0; //Set count to 1
while($row = $result->fetch_assoc()) {
    $counter++; //Increment counter by 1's
    $rID = $row["id"];
    ?>
        Output Region Here!

       <?php 

    //Output companies for this region.

    $sql = "SELECT
            tbl_company.company_name,
            tbl_company.group_number,
            tbl_region.region
            FROM
            tbl_region
            INNER JOIN tbl_company ON tbl_company.region_id = tbl_region.id
            WHERE
            $rID = tbl_company.region_id
            ORDER BY
            tbl_company.company_name ASC
            ";
    $result2 = $conn->query($sql);

    if ($result2->num_rows > 0) {
        // output data of each row
        while($row2 = $result2->fetch_assoc()) {

            echo $row2["company_name"]."<br>";

            }
        }
    echo "A";
    echo '</div>';
    }
    } ?>

您應該為內部和外部while循環使用不同的變量。 請嘗試以下操作:

<?php
    // Show/Hide Regions:

    error_reporting(-1);
    ini_set('display_errors', 'On');

    //Access our class.
    $db_Class = new db_Class;
    $conn = ($db_Class->db_conn());

    $sql = "SELECT id, region FROM tbl_region;";
    $resultOuter = $conn->query($sql);

    if ($resultOuter->num_rows > 0) 
    {
        // output data of each row
        $counter = 0; //Set count to 1
        while($rowOuter = $resultOuter->fetch_assoc()) 
        {
            $counter++; //Increment counter by 1's
            $rID = $rowOuter["id"];

            //Output companies for this region.

            $sql = "SELECT tbl_company.company_name, tbl_company.group_number, tbl_region.region
                    FROM tbl_region
                    INNER JOIN tbl_company ON tbl_company.region_id = tbl_region.id
                    WHERE
                    $rID = tbl_company.region_id
                    ORDER BY
                    tbl_company.company_name ASC ";

            $resultInner = $conn->query($sql);

            if ($resultInner->num_rows > 0) 
            {
                // output data of each row
                while($rowInner = $resultInner->fetch_assoc()) 
                {
                    echo $rowInner["company_name"]."<br>";

                }
            }
            echo "A";
            echo '</div>';
        }
    } 
?>

暫無
暫無

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

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