0

我的数据库中有 3 个病房A、B、C4 名员工(A 病房 3 个,B 病房 4 个,C 病房 1 个),下面的脚本正确打印出所有病房,并打印出在病房 A 工作的 3 名员工但仅此而已(I:E 它只与病房 A 而不是其他 2 比较)看图片

你能看到导致这种情况的 php 执行顺序有什么明显的错误吗?我是 PHP 新手,所以我不太了解语法 =)

while ( $row = mysql_fetch_array($wardNames) ) {

        echo("<tr><td><a href=\"javascript:displayWard('" . $row['Name'] ."')\">
        <div class='wardHeader'><div class='plus'></div><div class='wardName'><b>" . $row['Name'] . " </b></div>
        </div>
        </a></td></tr>");

        while ( $employeerow = mysql_fetch_array($Employees)) {//Only prints out employees on ward A and not B or C. Why?
            if($employeerow['Ward']==$row['Name']){
                echo("<tr><td>" . $employeerow['Name'] . "</td></tr>"); 
            }
        }
    }
4

1 回答 1

1

遍历结果集后,它已经耗尽,因此不再可迭代。将其存储在外循环之前的数组中:

$all_employees = array();
while($row = mysql_fetch_array($Employees)) {
    $all_employees[] = $row;
}

while ( $row = mysql_fetch_array($wardNames) ) {

    echo("<tr><td><a href=\"javascript:displayWard('" . $row['Name'] ."')\">
          <div class='wardHeader'><div class='plus'></div><div class='wardName'><b>" . $row['Name'] . " </b></div>
          </div>
          </a></td></tr>");

    foreach($all_employees as $employeerow)
        if($employeerow['Ward']==$row['Name']){
            echo("<tr><td>" . $employeerow['Name'] . "</td></tr>"); 
        }
    }
}
于 2013-05-02T19:06:57.383 回答