微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-需要计算入住和退房时间之间的总小时数

我正在尝试在数据库中创建一个检入/检出表.我的签到表格可以正常工作,将时间插入了我的数据库.当我尝试签出时出现问题.第一次进入时一切都很好…

enter image description here

但是当我尝试签入并再次签出时,会发生这种情况…

enter image description here

到目前为止一切都很好,但是当我结帐时…

enter image description here


当前,我的代码更新所有匹配child_id的out列和totalTime列.

这是我的代码

// Select the correct child from the database
$sql_childID = "SELECT id FROM child
                WHERE firstName = '$childFirstName'
                AND lastName = '$childLastName'";
$result = $pdo->query($sql_childID);
$row = $result->fetch();
$var = $row['id'];

// Insert the check out time for the child
$query = "UPDATE checkinout
        SET `out` = :NowTime
        WHERE child_id = $var
        AND `in` IS NOT NULL";
$statement = $pdo->prepare($query);
$statement->bindValue(':NowTime', date("YmjHis"));
$statement->execute();

// Select check in time for specified child
$sql_inTime = "SELECT `in` FROM checkinout
        WHERE child_id = $var";
$inResult = $pdo->query($sql_inTime);
$inRow = $inResult->fetch();
$inTime = strtotime($inRow['in']);

// Select the check out time for specified child
$sql_outTime = "SELECT `out` FROM checkinout
        WHERE child_id = $var";
$outResult = $pdo->query($sql_outTime);
$outRow = $outResult->fetch();
$outTime = strtotime($outRow['out']);

// Find total hours
$totalTime = abs($outTime - $inTime)/(60*60);

// Update totalHours column for specified child
$queryTotalTime = "UPDATE checkinout
                SET totalTime = :totalTime
                WHERE child_id = $var
                AND 'out' IS NOT NULL";
$statement = $pdo->prepare($queryTotalTime);
$statement->bindValue(':totalTime', $totalTime);
$statement->execute();

解决方法:

我认为您可以使用TIMESTAMPDIFF在第一条更新语句中完成所有这些工作,而不用用PHP计算总时间:

UPDATE checkinout
SET 
    out = Now(),
    totalTime = TIMESTAMPDIFF(SECOND, `in`, Now()) / 3600
WHERE
    child_id = $var
    AND out IS NULL

WHERE out IS NULL条件将仅更新out列中尚无值的行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐