Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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解决mysql数据库中的数据重复_Php_Mysql - Fatal编程技术网

如何用php解决mysql数据库中的数据重复

如何用php解决mysql数据库中的数据重复,php,mysql,Php,Mysql,我还有一个问题,那就是使用php对mysql数据库进行正确的迭代会让我头疼。这是测试数据: 0007 2015-1-15 17:17 0007 2015-1-19 07:45 0007 2015-1-19 17:58 0007 2015-1-20 08:08 0007 2015-1-20 17:18 0007 2015-1-21 07:42 0007 2015-1-21 17:17 0007 2015-1-22 07:45 下面是我的代码,用于按ID和日期提取和计算时间: $cxn=mysql

我还有一个问题,那就是使用php对mysql数据库进行正确的迭代会让我头疼。这是测试数据:

0007 2015-1-15 17:17
0007 2015-1-19 07:45
0007 2015-1-19 17:58
0007 2015-1-20 08:08
0007 2015-1-20 17:18
0007 2015-1-21 07:42
0007 2015-1-21 17:17
0007 2015-1-22 07:45
下面是我的代码,用于按ID和日期提取和计算时间:

$cxn=mysqli_connect($host,$user,$pass,$dbname) or die("Couldn't connect to 
server");
$qry="select ID, ValidDate,ValidTime,Hours from temprec group by  
ID,ValidDate";
$result=mysqli_query($cxn,$qry) or die("Couldn't execute query");

while($row=mysqli_fetch_assoc($result)){
extract($row);
$Time=date("H:i",strtotime($ValidTime));
$Day=date("D",strtotime($ValidDate));

if($Time >= $consTimeOut){
    $TimeOut=$Time;

}
elseif($Time > $consLunchOut AND $Time<=$consLunchIn){
    $LunchIn=$Time;

}
elseif($Time >= $consLunchOut AND $Time<$consLunchIn){
    $LunchOut=$Time;

}
elseif($Time>=$consTimeIn AND $Time <$consLunchOut){
    $TimeIn=$Time;

}
}
当我回显数据库的内容时,它没有重复项,但当我输入计算时,数据变得冗余,并不断重复,主要从17:17开始。希望你能帮助我

数据库结构 ID ValidDate ValidTime小时数

至于整个php脚本,其他代码仅用于表结构

这是我在编写上述代码之前编写的伪代码:

While date= newdate
If time!= nexttime then
vtime=time
if vtime>=6:00 AM AND vtime < 11:00 then
timein=vtime
elseif vtime>=11:00 AND vtime <13:00 then
lunchout=vtime
elseif vtime>= 13:00 AND vtime < 17:00 then
lunchin=vtime
else
timeout=vtime
完整代码


如果我没有弄错的话,在循环中为变量设置值之前,每次都需要清除变量$TimeOut、$午餐in、$午餐out、$TimeIn

你从哪里得到$ValidTime?我在你的代码里没看到

更新

    while ($row = mysqli_fetch_array($result))
    {

    extract($row);
    $valTime = strtotime($ValidTime);
    $valDate = strtotime($ValidDate);

    $TimeIn = "";
    $TimeOut = "";
    $LunchOut = "";
    $LunchIn= "";

    $Day = date("D", strtotime($ValidDate));

    if ($valTime) >= $consTimeIn && $valTime < $consLunchOut)
    {
        $TimeIn = $valTime;
    }
    elseif ($valTime >= $consLunchOut && $valTime < $consLunchIn)
    {
        $LunchOut = $valTime;
    }
    elseif ($valTime <= $consLunchIn && $valTime > $consLunchOut)
    {
        $LunchIn = $valTime;
    }
    else
    {
        $TimeOut = "";
        $TimeOut = $valTime;
    }


    if (empty($TimeIn)) 
    {
        $TimeIn = "NULL";
        $OTMsg = "You're missing some time";  
    }
    elseif(empty($LunchOut))
    {
        $LunchOut="NULL";
        $OTMsg="You're missing some time";  
    }
    elseif(empty($LunchIn))
    {
        $LunchIn="NULL";
        $OTMsg="You're missing some time";
    }
    else
    {
        /*$validHours = $TimeOut - $TimeIn;

        switch($validHours)
        {
            case 8:
                $OTMsg = "Completed the 8 hours standard time";
                $validOT = "None";
            break;
            case ($validHours < 8):
                $OTMsg = "You are considered undertime";
                $validOT = "None";
            break;
            case ($validHours > 8):
                $validHours -= 1;
                $validOT = $validHours - 8;
                $OTMsg = "Completed the 8 hours standard time and gained {$validOT} Hours";
            break;
        }*/
    }

    $newTimeout = date("g:i", strtotime($TimeOut));
echo "<tr><td>$ID</td>\n
      <td>$Day</td>\n
      <td>$ValidDate</td>\n
      <td>$TimeIn</td>\n
      <td>$LunchOut</td>\n
      <td>$LunchIn</td>\n
      <td>$newtimeout PM</td>\n
      <td>$OTMsg</td>\n";   
}   

评论不用于扩展讨论;这段对话已经结束。
    while ($row = mysqli_fetch_array($result))
    {

    extract($row);
    $valTime = strtotime($ValidTime);
    $valDate = strtotime($ValidDate);

    $TimeIn = "";
    $TimeOut = "";
    $LunchOut = "";
    $LunchIn= "";

    $Day = date("D", strtotime($ValidDate));

    if ($valTime) >= $consTimeIn && $valTime < $consLunchOut)
    {
        $TimeIn = $valTime;
    }
    elseif ($valTime >= $consLunchOut && $valTime < $consLunchIn)
    {
        $LunchOut = $valTime;
    }
    elseif ($valTime <= $consLunchIn && $valTime > $consLunchOut)
    {
        $LunchIn = $valTime;
    }
    else
    {
        $TimeOut = "";
        $TimeOut = $valTime;
    }


    if (empty($TimeIn)) 
    {
        $TimeIn = "NULL";
        $OTMsg = "You're missing some time";  
    }
    elseif(empty($LunchOut))
    {
        $LunchOut="NULL";
        $OTMsg="You're missing some time";  
    }
    elseif(empty($LunchIn))
    {
        $LunchIn="NULL";
        $OTMsg="You're missing some time";
    }
    else
    {
        /*$validHours = $TimeOut - $TimeIn;

        switch($validHours)
        {
            case 8:
                $OTMsg = "Completed the 8 hours standard time";
                $validOT = "None";
            break;
            case ($validHours < 8):
                $OTMsg = "You are considered undertime";
                $validOT = "None";
            break;
            case ($validHours > 8):
                $validHours -= 1;
                $validOT = $validHours - 8;
                $OTMsg = "Completed the 8 hours standard time and gained {$validOT} Hours";
            break;
        }*/
    }

    $newTimeout = date("g:i", strtotime($TimeOut));
echo "<tr><td>$ID</td>\n
      <td>$Day</td>\n
      <td>$ValidDate</td>\n
      <td>$TimeIn</td>\n
      <td>$LunchOut</td>\n
      <td>$LunchIn</td>\n
      <td>$newtimeout PM</td>\n
      <td>$OTMsg</td>\n";   
}