2016-07-19 9 views
1

Arbeit habe ich eine while-Schleife mit einer sleep() Funktion unten angegeben:Insert-Abfrage innerhalb einer Schleife mit sleep() Funktion nicht

$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') "); 

     } 

    } 

Die Insert-Abfrage funktioniert gut ohne die sleep() Funktion. Aber wenn ich die sleep() Funktion aktiviere, funktioniert es nicht. Bitte schlage mir den Grund vor.

+0

Warum möchten Sie die Schlaffunktion in diesem Fall verwenden? – Jite

+0

Meine erste Vermutung wäre, dass bei der SQL-Abfrage eine Zeitüberschreitung auftritt. Es kann sein, dass Sie die erste Person sind, die in einer MySQL-Abfrage einen 'sleep()' versucht. Hast du versucht, irgendwelche Ausnahmen zu finden? –

Antwort

1

Wo öffnen Sie die Datenbankverbindung mit mysqli_connect()? Es kann aufgrund Mysql Verbindung Timeout sein, da Sie alle 2 Sekunden schlafen. Versuchen Sie mit mysqli_connect() vor der mysqli_query ("Abfrage einfügen"); wird es funktionieren.

+0

seine Arbeit großer Mann danke –

0

Die PHP-sleep-Funktion dauert ein int Argument, das Sekunden die Ausführung sollte schlafen.
Sie wählen 2 Sekunden für jede Anzahl von jedem Mitarbeiter schlafen.
Ich würde denken, dass der Grund, warum Ihr Code nicht funktioniert, weil Ihre Ausführungszeit ist so lange wegen der sleep Anruf, dass Sie nie sehen, es zu beenden.

Ehrlich gesagt, ich kann nicht sehen, warum Sie überhaupt die sleep Funktion in diesem Fall verwenden möchten würde, und es sieht ganz seltsam, dass Sie nur ein paar Sekunden schlafen, wenn ein Mitarbeiter eine Reihe oder mehr ...

0

Mehrere Personen haben Timeout-Fehler vorgeschlagen. Das scheint wahrscheinlich. Ich würde versuchen, irgendwelche Ausnahmen zu fangen, um herauszufinden, was wirklich passiert

$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()); 
} 
Verwandte Themen