选择在5秒前插入的行

时间:2015-04-15 05:51:52

标签: php mysql date

我正在尝试从我的数据库中选择在5秒前插入的行。

我目前正在使用此查询:

$timerightnow = date("Y-m-d H:i:s");

if($stmt = $con->prepare("SELECT notimessage,
                          Second(TIMEDIFF('$timerightnow',dateofreg)) AS Second1
                          FROM notitb
                          WHERE checked = 0 HAVING Second1 <= 5")){

但它没有显示任何结果。我做得对吗?或者我的查询从一开始就是不正确的?

1 个答案:

答案 0 :(得分:1)

您的查询肯定存在一些语法错误。特别是,$ timerightnow是一个字符串,但它不在引号中,而Second1是别名,因此不能在WHERE中使用,它只能在HAVING中使用。如果您能看到错误,而不是盲目地调试错误,它会对您有所帮助。这将有所帮助:

http://php.net/manual/en/mysqli.error.php

然后,请注意,prepare不执行查询,它只准备它。然后,您需要绑定参数(特别是,我将绑定当前日期而不是将其硬编码到查询字符串中),然后您需要通过$stmt->execute()执行查询。目前尚不清楚你是否这样做,因为你的代码被截断了,如果你没有,那么这将有所帮助:

http://php.net/manual/en/mysqli.prepare.php

请参阅示例,在那里他们准备查询,绑定一些参数并执行它。

最后,您可能希望谓词为Second1 <= 5而不是Second1 = 5,如果您想要获取最后5秒内的所有内容,而不仅仅是在5秒前的第二秒内发生的事情