while 中的 while 循环会永远循环 PHP MYSQL

While loop in a while does loop forever PHP MYSQL

我正在做一个 while 循环,所以代码会读出有多少进球。 如您所见 $scorecounter = 1;$scorecounter++;,这与计数器一起使用。 它还增加了如果 1 进一球,球员进一球。 当得分 6 次时,它会执行 while 循环 6 次。

一切正常,但唯一不起作用的是页面一直在加载。就像它永远在循环一样。页面不刷新,它一直在做第二个 while 循环。

我知道这与以下有关:

while ($scorecounter <= $scorecounter) {
                            mysql_query("INSERT INTO goals (PlayerID, GameID, Name, Team, added_on) VALUES ('$IDdpt', '$Gamedpt', '$Namedpt', '$comp', '$date')");
                }

但我一直找不到问题所在。

这是我的全部代码:

<?php
$Gamedpt = $row['ID'];
$IDdpt = $_POST['ID1'];
$Namedpt = $_POST['player1']; 

$scorecounter = 1;

if (stristr($row['Hometeam'],"$club")) {
    $totalgoals = $row['Thuisscore'];
}
if (stristr($row['Awayteam'],"$club")) {
    $totalgoals = $row['Uitscore'];
}
while ($doelpuntcounter <= $totalgoals) {

if ($_POST["score1"] == "$scorecounter") {
    echo $_POST["player1"];
    echo " has $scorecounter times scored";
    mysql_query("UPDATE players SET Goals = Goals+'$scorecounter' WHERE Naam ='".$_POST["player1"]."'");
                    while ($scorecounter <= $scorecounter) {
                        mysql_query("INSERT INTO goals (PlayerID, GameID, Name, Team, added_on) VALUES ('$IDdpt', '$Gamedpt', '$Namedpt', '$comp', '$date')");
            }

    }
    $scorecounter++;
}
?>

请帮忙。

您的代码中有两个缺陷。我已经准备好代码并添加了一些注释。请同时阅读下面的警告。

while ($doelpuntcounter <= $totalgoals) {
    if ($_POST["score1"] == "$scorecounter") {
        echo $_POST["player1"] . " has $scorecounter times scored.";
        mysql_query("UPDATE players SET Goals = Goals+'$scorecounter' WHERE Naam ='".$_POST["player1"]."'");
        while ($scorecounter <= $scorecounter) {
            mysql_query("INSERT INTO goals (PlayerID, GameID, Name, Team, added_on) VALUES ('$IDdpt', '$Gamedpt', '$Namedpt', '$comp', '$date')");
            $scorecounter++; // needs to be in this while loop, flaw #1 !
        }

    }
    // additionally, where is your $doelpuntcounter incremented???
    // flaw #2
}

此外,您仍在使用旧的 mysql 功能。相反,请尝试使用较新的 mysqli 函数或 PDO

问题出在以下行:

while ($scorecounter <= $scorecounter) { ... }

您也可以将此视为检查 1 是否小于或等于 1。这等同于 while (true) { ... },因此会导致无限循环。您可能指的是以下内容:

while ($scorecounter <= $totalgoals) { ... }

如评论中所述:

while ($scorecounter <= $scorecounter)

这会给你一个无限循环,因为 $scorecounter 总是等于它自己。

你需要这样的东西来停止无限循环:

$loop_breaker = 0;
while ( ++$loop_breaker <= $scorecounter) {
                        mysql_query("INSERT INTO goals (PlayerID, GameID, Name, Team, added_on) VALUES ('$IDdpt', '$Gamedpt', '$Namedpt', '$comp', '$date')");
}