PHP/mySQL获得x秒的时差
我的目标是获得两个不同时间之间的时差,一个来自我的数据库,另一个来自客户端的PHP时间戳,并对它们进行比较。然后,如果时差小于或等于10秒,则采取措施 我的代码不起作用,如下所示PHP/mySQL获得x秒的时差,php,mysql,Php,Mysql,我的目标是获得两个不同时间之间的时差,一个来自我的数据库,另一个来自客户端的PHP时间戳,并对它们进行比较。然后,如果时差小于或等于10秒,则采取措施 我的代码不起作用,如下所示 date_default_timezone_set('America/Chicago'); $timestamp = date('Y-m-d H:i:s'); $sqlcheck = $dbh->prepare("SELECT timestem FROM mytable WHERE UNIX_TIMESTAMP
date_default_timezone_set('America/Chicago');
$timestamp = date('Y-m-d H:i:s');
$sqlcheck = $dbh->prepare("SELECT timestem FROM mytable WHERE UNIX_TIMESTAMP(timestem) - UNIX_TIMESTAMP('".$timestamp."') <= 10");
$sqlcheck->execute();
if ($sqlcheck === ''){
echo "Yes";
}
else {
echo "No";
}
date\u default\u timezone\u set('America/Chicago');
$timestamp=日期('Y-m-d H:i:s');
$sqlcheck=$dbh->prepare(“从mytable中选择timestem,其中UNIX_TIMESTAMP(timestem)-UNIX_TIMESTAMP(““.”$TIMESTAMP.””)您可以同样轻松地在PHP中执行检查(这可能会更直接一些)
一些注意事项:
在您的代码中,您实际上没有从数据库中获取值。您在条件语句中使用了result对象
您的代码隐式地假设表中只有一条记录。这可能不是真的:您将需要where条件
你必须非常确定你所有的时间戳都在同一个时区
这只在使用PDO而不是mysqli的情况下才有效。我无法从您的示例中看出区别,但一个微妙的区别是PDO允许您使用无绑定参数的准备和执行,但mysqli不会
您可以同样轻松地在PHP中进行检查(这可能会更直接一些)
一些注意事项:
在您的代码中,您实际上没有从数据库中获取值。您在条件语句中使用了result对象
您的代码隐式地假设表中只有一条记录。这可能不是真的:您将需要where条件
你必须非常确定你所有的时间戳都在同一个时区
这只在使用PDO而不是mysqli的情况下才有效。我无法从您的示例中看出区别,但一个微妙的区别是PDO允许您使用无绑定参数的准备和执行,但mysqli不会
您应该使用MySQL内置函数:
$sqlcheck = $dbh->prepare('SELECT timestem FROM mytable WHERE TIMESTAMPDIFF(SECOND, timestem, $1) <= 10');
$result = $sqlcheck->execute([$timestamp]);
请注意,这假设只有一行。对于多行,您需要一个循环。请注意,只返回符合条件的行,因此如果使用循环,您将永远看不到任何否
输出。您应该使用MySQL内置函数:
$sqlcheck = $dbh->prepare('SELECT timestem FROM mytable WHERE TIMESTAMPDIFF(SECOND, timestem, $1) <= 10');
$result = $sqlcheck->execute([$timestamp]);
请注意,这假设只有一行。对于多行,您需要一个循环。请注意,只有符合条件的行才会返回,因此如果使用循环,您将永远不会看到任何NO
输出。Re您的观点4:问题明确指出timetem
是DATETIME
字段。谢谢,我已经更新了我的answer(并放在另一个注释中)Re你的观点4:问题明确地说,timestem
是一个DATETIME
字段。谢谢,我已经更新了我的答案(并放在另一个注释中)。为什么$sqlcheck
会突然变成空字符串?为什么$sqlcheck
会突然变成空字符串?
if ($timestem = $result->fetchColumn()) {
echo "YES";
// You can also use the value of `$timestem` here.
} else {
echo "NO";
}