我有一个带有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 :(得分: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());
}