做一个PHP虽然循环内while循环
问题描述:
我想做一个php while
循环内另一个php while
循环,但当我到第二个循环它不会回到第一个和再次回到这里是我正在使用的代码:做一个PHP虽然循环内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>';
}
} ?>
答
变化内环$行和$与任何其他name..for比如我做了$ 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>';
}
}
}
?>
+0
这样做我认为这是问题,但不知道我是否可以更改名称。谢谢!! –
答
你应该使用不同的变量$result
像$result2
2 while循环。这是造成冲突。
答
您用第二个$ row/$结果覆盖了第一个$ row/$结果。尝试为第二组结果使用不同的名称。
// 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>';
}
}
?>
您应该对$ row和$ result使用不同的变量。两个循环都不一样。 –
我不确定,但在使用相同的$行变量的两个查询中可能存在问题,请您更改并尝试。 –