2016-07-19 74 views
1

一個循環中插入查詢我有如下一個sleep()功能的while循環:睡眠()函數不工作

$employee = mysqli_query($conn , "SELECT emp_id,emp_name FROM employee 
         WHERE DATE(datetime) = '$date' "); 

    if(mysqli_num_rows($employee) > 0){ 

     while ($row = mysqli_fetch_array($employee)) { 

      $emp_id  = $row['emp_id']; 
      $emp_name  = $row['emp_name']; 

      $number = mysqli_query($conn ,"SELECT phone_number FROM emp_phone_number 
           WHERE emp_id = '$emp_id' "); 

      if(mysqli_num_rows($number) > 0){ 

       while ($row2 = mysqli_fetch_array($number)) { 
        sleep(2); 
        } 

      }   
       mysqli_query($conn , " INSERT INTO `emails`(`emp_id`, `email`) VALUES ('$emp_id','hello') "); 

     } 

    } 

插入查詢是沒有sleep()功能工作正常。但是,當我啓用sleep()函數它不起作用。請告訴我原因。

+0

爲什麼你想在這種情況下使用睡眠功能? – Jite

+0

我的第一個猜測是,SQL查詢會發生某種超時。這可能是你是第一個在MySQL查詢循環中嘗試「sleep()」的人。你有沒有嘗試捕捉任何異常? –

回答

1

你在哪裏打開使用數據庫連接mysqli_connect()?這可能是由於您每2秒鐘有一次睡眠導致Mysql連接超時。嘗試使用mysqli_connect()之前的mysqli_query(「Insert Query」);它會工作。

+0

其工作偉人感謝 –

0

PHP sleep函數採用int參數,這是執行應睡眠的秒數。
您選擇每個員工每個號碼睡2秒。
我認爲你的代碼不「工作」的原因是你的執行時間很長,因爲sleep調用,你永遠不會看到它完成。

老實說,我不能明白爲什麼你會不會想使用的功能sleep在這種情況下,它看起來很奇怪,你只想睡覺了幾秒鐘,如果員工有一個數字或更多...

0

有幾個人建議超時錯誤。這似乎是可能的。我會嘗試捕捉任何例外以瞭解真實情況

$employee = mysqli_query($conn , "SELECT emp_id,emp_name FROM employee 
         WHERE DATE(datetime) = '$date' "); 
try{ 
    if(mysqli_num_rows($employee) > 0){ 

     while ($row = mysqli_fetch_array($employee)) { 

      $emp_id  = $row['emp_id']; 
      $emp_name  = $row['emp_name']; 

      $number = mysqli_query($conn ,"SELECT phone_number FROM emp_phone_number 
           WHERE emp_id = '$emp_id' "); 

      if(mysqli_num_rows($number) > 0){ 

       while ($row2 = mysqli_fetch_array($number)) { 
        sleep(2); 
        } 

      }   
       mysqli_query($conn , " INSERT INTO `emails`(`emp_id`, `email`) VALUES ('$emp_id','hello') "); 

     } 

    } 
} 
catch(\Exception $e){ 
    die($e->getMessage()); 
}