簡體   English   中英

PHP while循環僅迭代一次

[英]PHP while loop iterates only once

快速提問;

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");

while($cronjob = mysql_fetch_array($sql)){
    if($cronjob['suid'] != $cronjob['cuid']){
        //echo 'not equal<br>';
        $set = 0;
        $sid = $cronjob['sid'];
        $suid = $cronjob['suid'];
        $cuid = $cronjob['cuid'];
        $set = notify($sid, $suid, $cuid);
        if($set==1){
            //echo 'notified<br>';
            $sql = "UPDATE cronjobs SET status = '1' WHERE id='".$cronjob['id']."'";
            if(mysql_query($sql)){
               echo '1<br>';
              $set = 0;
          }
        }
      }
   }
}

notify()return 1 (數字)

問題是,即使有更多記錄,也只執行while循環的一次迭代。 我不知道這是怎么回事。 請幫幫我。

請將內部$ sql變量名稱更改為其他名稱。.外部$ sql與內部$ sql發生沖突

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");

while($cronjob = mysql_fetch_array($sql)){
    if($cronjob['suid'] != $cronjob['cuid']){
        //echo 'not equal<br>';
        $set = 0;
        $sid = $cronjob['sid'];
        $suid = $cronjob['suid'];
        $cuid = $cronjob['cuid'];
        $set = notify($sid, $suid, $cuid);
        if($set==1){
            //echo 'notified<br>';
            $sql_2 = "UPDATE cronjobs SET status = '1' WHERE id='".$cronjob['id']."'";
            if(mysql_query($sql_2)){
               echo '1<br>';
              $set = 0;
          }
        }
      }
   }
}

只是一個觀察:

因為您有:

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");  
while($cronjob = mysql_fetch_array($sql)){ 

它會在循環中每執行一次查詢一次。 如果您有100行,它將執行100次。 如果改為執行此操作,則它僅執行一次。

$sql = mysql_query("SELECT * FROM cronjobs WHERE status = 0 ");  
$res = mysql_fetch_array($sql);
while($cronjob = $res){ 

它也不會沖突!

當您具有相同的查詢變量($ query)和結果對象($ result)時,顯然會發生此問題。請在WHILE循環內為mysql_query()嘗試使用不同的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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