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')");
}
我正在做一个 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')");
}