簡體   English   中英

在Foreach和MySQL中使用While的無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM