在一个循环中插入查询,sleep()函数不起作用

时间:2016-07-19 07:08:15

标签: php mysqli

我有一个带有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()功能时,它不起作用。请告诉我原因。

3 个答案:

答案 0 :(得分:1)

您在哪里使用 mysqli_connect()打开数据库连接?这可能是由于Mysql连接超时,因为你每2秒睡一觉。尝试在 mysqli_query之前使用 mysqli_connect()("插入查询"); 它会起作用。

答案 1 :(得分:0)

PHP sleep函数接受一个int参数,该参数是执行应该休眠的秒数 您为每位员工的每个号码选择睡2秒钟 我认为你的代码不会工作的原因是"是因为sleep调用你的执行时间很长,你永远不会看到它完成。

老实说,我不明白为什么你会想要在这种情况下使用sleep功能,如果一个员工有一个或多个人,你只想睡几秒钟就很奇怪了。

答案 2 :(得分: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());
}