Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查最新更新数据,并仅在另一个查询中运行更新日期_Php_Mysql - Fatal编程技术网

Php 检查最新更新数据,并仅在另一个查询中运行更新日期

Php 检查最新更新数据,并仅在另一个查询中运行更新日期,php,mysql,Php,Mysql,我正在使用考勤管理系统,从指纹扫描仪接收数据。下面显示的是系统的结构 出席人数表: EnrolledID Date Time 2603 2019-08-01 04:29:52 2087 2019-08-01 04:46:12 2539 2019-08-01 05:44:31 1310 2019-08-01 05:48:25 2088 2019-08-01 05:48:32 112 2019-0

我正在使用考勤管理系统,从指纹扫描仪接收数据。下面显示的是系统的结构

出席人数表:

EnrolledID  Date    Time    
2603    2019-08-01  04:29:52    
2087    2019-08-01  04:46:12    
2539    2019-08-01  05:44:31    
1310    2019-08-01  05:48:25    
2088    2019-08-01  05:48:32    
112     2019-08-01  05:50:58    
672     2019-08-01  05:54:17    
108     2019-08-01  05:54:36
使用Php代码,数据被分为time_in和time_out

$query = "SELECT 
EnrolledID,Date,COUNT(Time),
CASE 
WHEN COUNT(Time) = 1 THEN 
    CASE 
        WHEN Time > '03:00:00' 
            && Time <= '12:15:00' 
            THEN Time END
ELSE MIN(Time) 
END as time_in,
CASE 
WHEN COUNT(Time) = 1 THEN
    CASE 
        WHEN Time > '12:15:00' 
            && Time <= '23:59:59' 
            THEN Time END
ELSE NULLIF(MAX(Time), MIN(Time)) 
END as time_out
from attendance
GROUP BY EnrolledID,Date";


$result_set = mysqli_query($conn, $query);

if (mysqli_num_rows($result_set) > 0) 
          {
              //$query = "TRUNCATE TABLE month_data";
              //mysqli_query($conn, $query);

             while($row = mysqli_fetch_assoc($result_set)) 
             {

                 $EnrolledID = sprintf('%04d',$row["EnrolledID"]);

                 $Date = date_format( date_create($row['Date']), 'Y-m-d D' );

                 if(isset($row['time_in']) == 'NULL')
                 {
                     $time_in = date_format( date_create($row['time_in']), 'H:i:s' );
                 }
                 else
                 {

                     $time_in = '';
                 }

                if(isset($row['time_out']) == 'NULL')
                {
                   $time_out = date_format( date_create($row['time_out']), 'H:i:s' );

                }
                else{
                     $time_out = ''; 
                }

                $totaltime = (strtotime($time_out) - strtotime($time_in));

                $hours = sprintf('%02d', intval($totaltime / 3600));

                $seconds_remain = ($totaltime - ($hours * 3600)); 

                $minutes = sprintf('%02d', intval($seconds_remain / 60));   
                $seconds = sprintf('%02d' ,($seconds_remain - ($minutes * 60)));

                $final = '';

                if ($time_in == '' || $time_out == '')
                {
                    $final = '';
                }
                else
                {
                    $final .= $hours.':'.$minutes.':'.$seconds;
                }

                 $sql = "INSERT INTO month_data (Emp_no, Date,Time_in,Time_out,Total_hours) VALUES ({$EnrolledID},'{$Date}','{$time_in}','{$time_out}','{$final}')";
                 mysqli_query($conn, $sql);
             }
                 echo "successfully Process data <br>";
          }

无论何时运行脚本。尝试使用排序方式选择特定日期的数据

$dateToday = date('Y-m-d')

这样旧数据就不会受到影响。

但它不合适。因为每月数据获取的时间不是每天完成的。如果您正在执行一个月的操作。然后,您可以在执行此代码之前删除当月的旧数据。因此,您将获得没有重复数据的新数据。我想使用方法检查考勤表和月份数据表以及考勤表中存在的新记录,在月份数据表中查找并获取更新。您可以使用“NOT…in”查询对日期进行排序。你们可以处理那个些数据。我还需要保留旧数据。唯一的问题是在数据库中的同一行中并没有重复的数据
$dateToday = date('Y-m-d')