MySQL表未在指定时间通过PHP cron作业进行更新

时间:2017-05-04 05:40:38

标签: php mysql cron

我正在开发一个Android应用程序,它有一个MySQL数据库,其中包含一个包含每个用户的所有登录详细信息的表。在该表中,我有一个名为" Status"最初为每个用户分配为0。每当用户登录到他的帐户并提交数据(单击提交按钮)时,状态将更改为1.每天晚上12点,状态应重置为0。此外,如果用户直到上午10点才提交数据一天,则应该自动将一行插入到MySQL表中,其列值为" No Records"对于状态仍为0的特定用户。因此,我创建了一个PHP文件,该文件在cpanel中作为cron作业运行。 PHP文件每小时检查一次。当前时间上午12点和上午10点,它应该进行必要的更改。但我没有得到我的PHP脚本所需的结果。脚本如下:

<?php

require "connection.php";


$get_time = "select date_format(NOW(), '%H:%i A') as current_daily_date from dual;";
$convert_time = mysqli_query($connect,$get_time);
$php_time = mysqli_fetch_assoc($convert_time);
$final_time = $php_time["current_daily_date"];


$dateTime = new DateTime('now', new DateTimeZone('Asia/Kolkata')); 
$d = $dateTime->format("H:i A ");
$e = $dateTime->format("d/m/y"); 
echo $d;

$s = '00:00';
$g = strtotime($s);
$p = date('H:i A',$g);
echo $p;

$c = '10:00';
$q = strtotime($c);
$r = date('H:i A',$q);
echo $r;

if($d == $p) {

        $run = "UPDATE login SET status = 0;";
        $connect->query($run);  
                echo "Status updated";

   }

else if($d == $r) {

     $second_run = "INSERT into attendance (name,date,attendance) VALUES ((SELECT name from login where status = 0 ), '$e' , 'No Records');";
     $connect->query($second_run);  
         echo "Marked as No Records";

 }

 else {

     echo "Not the correct time to change the status.";
 }

 $connect->close();

 ?>

我已经为cron作业设置了电子邮件,以便将输出发送到我的邮箱。但即使在上午12点,该表也没有更新。

输出结果为:

00:00 AM 00:00 AM10:00 AMNot the correct time to change the status.

我不知道自己哪里出错了。任何人都可以检查并告诉我这是什么问题?

1 个答案:

答案 0 :(得分:1)

INSERT SELECT的格式不正确:

$second_run = "INSERT into attendance (name,date,attendance) SELECT name, ****, **** from login where status = 0";

您不需要VALUES位,我不确定最终段是什么。你也试图插入3个值,同时只提供一个,我把****放在你需要放置其他值的地方。

如果您没有从中获取任何错误,也应该在脚本中启用错误报告,因为这可能是错误。

error_reporting(E_ALL);
ini_set('display_errors', 1);