[PHP][MySQL] Infinite loop di dalam while semasa memanggil fetch_assoc()

Semasa memanggil fetch() untuk mendapatkan hasil dari pertanyaan (query) SQL.

Kod yang saya punyai adalah

if($sqlexec = $db->query("SELECT * from torrent WHERE running IN(0)")){
  print("Looping through ".$sqlexec->num_rows." records.\n\n");
  $i=0;
  while($row = $sqlexec->fetch_assoc()){
    $i++;
    print("Processing record ".$i."\n.");
    $rpc->GetSessionID();
    $hash = $row['hash'];
    $id = $row['owner'];
    $added = $row['time_added'];
    $done = $row['time_done'];

    $get = $rpc->get($hash, array( 'id', 'name', 'eta', 'etaIdle', 'downloadDir', 'peersSendingToUs', 'percentDone', 'rateDownload', 'totalSize', 'hashString', 'isFinished', 'isStalled', 'activityDate', 'doneDate')); 
 
    $sizeGB = ceil($get->arguments->torrents[0]->totalSize /1000/1000/1000);
    $expireIn = $sizeGB*$expiry;

    if($sqlexec = $db->query("SELECT * from torrent WHERE running IN(0) AND hash='".$hash."'")){
      if($sqlexec->num_rows<=1){
        if(($done + ($expireIn*60*60)) <= time()){
          $del = $rpc->remove(array($hash), true);
      }
    }
  }
}

Gelung (loop) while ini berjalan tanpa henti. Setelah diteliti, saya menggunakan pemboleh ubah yang sama pada kedua-dua pertanyaan (query) 1 dan 18.
Setelah menggunakan pemboleh ubah yang berbeza, akhirnya kod ini berjalan dengan sempurna.

Leave a Reply

Your email address will not be published. Required fields are marked *