我试图将TIME值添加到mysql数据库中。但是数据库中添加的值是 838:59:59
它只会在 838:59:59 中存储到timein列中。超时列结果为 00:00:00 值。
以下代码
<?php
$connect = mysqli_connect("localhost", "root", "root", "database");
global $connect;
if(isset($_POST['Submit']))
{
$timeout = strtotime('08:30:00');
$timein = strtotime('12:30:00');
$time_out_user = strtotime($_POST['timeout']);
$time_in_user = strtotime($_POST['timein']);
if(($time_out_user >= $timeout) && ($time_out_user <= $timein))
{
echo "Duplicate time";
}
else
{
$add = "INSERT INTO table (timeout,timein)
VALUES ('$time_out_user','$time_in_user')";
$addDateTime = mysqli_query($connect,$add);
echo "Time added";
}
}
?>
<form action="test.php" method="post">
<table>
<tr>
<td><i class="fa fa-unlock-alt"></i> </td>
<td>Time Out: </td>
<td><input type ="time" name="timeout" size="30"></td>
</tr>
<tr>
<td><i class="fa fa-unlock-alt"></i> </td>
<td>Time In: </td>
<td><input type ="time" name="timein" size="30"></td>
</tr>
</table>
<p><input class="btnSuccess" type ="submit" name="Submit" value="Submit"> </p>
</form>
感谢。
答案 0 :(得分:2)
答案很简单,就是该字段可以容纳的最大值。
MySQL以'HH:MM:SS'格式检索并显示TIME值(或 'HHH:MM:SS'格式表示大小时值)。 TIME值的范围可以从 '-838:59:59'到'838:59:59'。小时部分可能很大,因为 TIME类型不仅可以用来表示一天中的某个时间(哪个 必须小于24小时),但也要经过时间或时间间隔 在两个事件之间(可能远远超过24小时,甚至是 负)。
你可能最好只使用一个int字段(其中值存储为与起始时间的秒差)。通常的做法是创建一个字段,用于存储自纪元以来经过的秒数而不是日期时间字段。否则,您需要切换到datetime字段。
答案 1 :(得分:0)
您正在使用 strtotime()
strtotime() - 将英文文本日期时间解析为Unix时间戳:
例如:
argc == n
在此尝试
int