我需要运行检查以确定过去 24 小时内是否将行插入到数据库中。无论我做什么,它总是返回说我已经创建了一行。 (是否将 INTERVAL 1 DAY 更改为 INTERVAL 1 Month、INTERVAL 1 Year、INTERVAL 1 Second 等)
有人可以告诉我我做错了什么以及如何解决它吗?另外,您可以提供有关如何调试此问题的任何信息都会很棒。
if ($stmt = $mysqli->prepare( "SELECT * FROM votes WHERE id = " . $id . " AND cdate >= now() - INTERVAL 1 DAY")) {
echo 'Row created within the last 24 hours';
} else {
echo 'Row not created within the last 24 hours';
}
数据库表包含列 cdate
并设置为DATETIME
默认值为CURRENT_TIMESTAMP
。以下是值 2015-08-20 21:14:30
之一的示例
最佳答案
$stmt
是语句对象,而不是查询结果。
(您已准备好查询但尚未执行它。)
我建议您仔细阅读文档,您需要的一切都在这里:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
具体来说,您正在寻找如何执行准备好的查询 ($stmt
) 以及如何检索结果集。
文档页面上的示例代码。
如果您仍然陷入困境,请查找您正在调用的方法。 http://php.net/manual/en/mysqli.prepare.php
成功则返回一个statement对象,否则返回false。
PHP 不是类型严格的 - 这意味着它会尝试“逻辑地”而不是“严格地”比较事物。一个对象是“true”(在您的条件语句中) - 因此它会打印出您所看到的内容。
对于调试,您可以简单地使用:
echo "<pre>"; var_dump($stmt);
(或者如果您想认真的话,可以使用带有 NetBeans 断点和检查的 xdebug:https://netbeans.org/kb/docs/php/debugging.html
这将输出变量的详细信息 - 这可能会有所启发。
如果您来自其他语言,请告诉我,有人可能会提供一些提示,让您跑得更快。 :)
关于php - 使用 PHP/MySQL 检查过去 24 小时内是否插入了 MySQL 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129750/