while循环内部foreach循环内部while循环


while loop inside foreach loop inside while loop

我只知道标题很伤人。我感觉自己像是处于起步阶段。我正在使用两个不同的数据库。我正在尝试使用while循环从第一个数据库中使用while环路获取4个值。然后,我想在foreach循环中使用while循环来查找这4个值的名称和相关定律。我尝试过不同的代码,这一个代码最接近我,但只返回第一个值,而不是其他三个值。

$link1 = mysql_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_dblogin);
if(!$link1 || !mysql_select_db ($mysql_dblogin)) {
die ($conn_error_message);
}
$link2 = mysql_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_db, TRUE);
if(!$link2 || !mysql_select_db ($mysql_db)) {
die ($conn_error_message);
}

$sql="SELECT loi FROM $username";
$result = mysql_query("$sql", $link1);
$data = array();
if($result){
WHILE($row=mysql_fetch_assoc($result)){
$data[]=$row;
foreach($data as $vote){
        $loi = $vote['loi'];
        $sql="SELECT objet, colo FROM scruinfo WHERE colo = '$loi' ";
        $result=mysql_query("$sql", $link2);
        if($result){
            WHILE($row=mysql_fetch_assoc($result)){
            $loi = $row["colo"];
            $name = $row["objet"];
            echo "<table><td href='votes.php?loi=".$loi."'>".$name."</td></table><br>";
            }
        }
    }
}
}else{
echo mysql_error();
}
?>

foreach内部,您正在用新值更新$result$row,因此外部while将停止循环
重命名这些变量就可以了!

WHILE($row=mysql_fetch_assoc($result)){
    $data[]=$row;
    foreach($data as $vote){

这很糟糕,您将一个结果存储在数据中,然后在数据中的所有实体中循环,然后在下一个循环中向数据添加另一行,然后循环数据中的全部实体。因此,如果你从第一个查询中提取10行,你将在第一行运行foreach 10次,第二行运行9次,第三行运行8次,以此类推。如果你提取100行,你运行的辅助循环太多,你会超时,更不用说运行5000多个查询了。