我试图在另一个php while循环中执行php while循环,但是当我进入第二个循环时,它不会返回到第一个循环,而是再次循环--下面是我使用的代码:
数据库连接字符串位于单独的模块中。第一个while循环应该循环两次,但是当它到达第二个数据库while循环时会发生什么,这个循环返回正,它会影响第一个循环,所以我只从第一个循环得到一个循环。谁能告诉我怎样才能改变这个问题以避免这个问题?
以下是数据库中的两个循环:
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>';
}
} ?>发布于 2016-05-16 06:27:03
用我在这里做过的任何其他$row和$resultInner示例更改内环name..for和$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>';
}
}
}
?>发布于 2016-05-16 06:28:44
对于$result,您应该使用一个不同的变量,比如2 like循环的$result2。这导致了冲突。
发布于 2016-05-16 06:30:02
您用第二个$行/$结果覆盖了第一个$行/$结果。尝试为第二组结果使用不同的名称。
// 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>';
}
} ?>https://stackoverflow.com/questions/37247869
复制相似问题