我正在尝试从我的数据库中选择在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")){
但它没有显示任何结果。我做得对吗?或者我的查询从一开始就是不正确的?
答案 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秒前的第二秒内发生的事情