Php 如何使用两个while循环检索数据

Php 如何使用两个while循环检索数据,php,Php,第一个查询工作正常,它检索类id,但第二个查询有一个问题,因为它没有检索子名称 <select name="child-name" id="Schild"> <?php $username = $_SESSION['username']; $sql1 = "SELECT Class_id FROM Class WHERE Emp_id = '$username'"; $result = mysqli_query($database,$sql) or di

第一个查询工作正常,它检索类id,但第二个查询有一个问题,因为它没有检索子名称

<select name="child-name" id="Schild">
<?php
    $username = $_SESSION['username'];
    $sql1 = "SELECT Class_id FROM Class WHERE Emp_id = '$username'";
    $result = mysqli_query($database,$sql) or die(mysqli_error($database));

    while($row = mysqli_fetch_array($result))
    {
        $classID = $row['Class_id'];
        $sql2 = "SELECT Name FROM Children WHERE Class_id = '$classID'";
        $result2 = mysqli_query($database,$sql2) or die(mysqli_error($database));
        while($row = mysqli_fetch_array($result2))
?>
    <option><?php echo $row['Name'];?></option>  

<?php 
        }
?> 
</select>

您在两个resultset回迁中都使用了$row。因此,为外环破坏它

在测试时,始终添加这些行,特别是在实时/托管服务器上测试时,错误报告几乎肯定会关闭

<?php
    ini_set('display_errors', 1); 
    ini_set('log_errors',1); 
    error_reporting(E_ALL); 
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
?>

<select name="child-name" id="Schild">
<?php
    $username = $_SESSION['username'];
    $sql1 = "SELECT Class_id FROM Class WHERE Emp_id = '$username'";
    $result = mysqli_query($database,$sql1) or die(mysqli_error($database));
    // Late breaking fix             ^^^^

    while($row = mysqli_fetch_array($result))
    {
        $classID = $row['Class_id'];
        $sql2 = "SELECT Name FROM Children WHERE Class_id = '$classID'";
        $result2 = mysqli_query($database,$sql2) or die(mysqli_error($database));
        while($row2 = mysqli_fetch_array($result2)) {
    // fix    ^^^^^
?>
    <option value="<?php echo $row2['Name'];?>"><?php echo $row2['Name'];?></option>  
<?php 
    // fix             ^^^^^
        }
?> 
</select>
<?php
    // also add terminator for first while loop
    }
?>


WinCenter的sql注入您的代码容易受到sql注入攻击。您应该按照中所述使用或准备语句。您在两个resultset回迁中都使用了
$row
。因此,对于外部循环,您使用相同的行变量。只要有另一个变量名。还可以打开错误报告。。。然而我仍在努力弄清楚什么是“不稳定数据”。。。有点烦躁吗?aaaaaaaaah可能检索?有任何不同的结果吗?请参阅建议的错误报告添加到脚本中。您确定子级是否等于该类id@SamahAbuSaud您是否尝试从php my admin运行查询并手工编码id?是否存在具有该类id的名称?@RiggsFolly我相信这就是他第二次查询失败的原因。Op说他从第一个查询中得到结果是在撒谎,这是不可能的,第一个查询永远不会执行