[英]Infinite Loop with While inside Foreach and MySQL
我在使用PHP / MySQL時遇到一個非常奇怪的問題...
回聲“ id; id”
foreach($ids as $id) {
echo "id;";
}
回聲“ id; id; id; id; ...”(無限循環)
foreach($ids as $id) {
while($row = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `Table` WHERE `id`=$id;") {
echo "id;";
}
}
我有一個foreach()語句的原因是因為我對$ ids進行了排序。
您將得到一個無限循環,這僅僅是因為您在while
循環中每次都重新運行查詢。 這意味着,對於每個$id
,您將連續運行查詢並從中提取第一行。 因此,對於返回多於零行的任何查詢,該查詢的連續重新執行將使while
循環無休止。
它在功能上與以下偽代碼類似,由於您正在循環中修改控制條件,因此該偽代碼也將永遠循環:
loop i from 1 to 10
set i to 1
endloop
您應該嘗試類似的方法:
foreach($ids as $id) {
$result = mysqli_query($conn, "SELECT * FROM `Table` WHERE `id`=$id;");
while($row = mysqli_fetch_array($result)) {
echo "id;";
}
}
這將為每個ID運行一次查詢, while
循環將處理該查詢的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.