SQL查询返回错误的时间戳

时间:2015-12-16 22:35:44

标签: php mysql datetime

我正在开发一个涉及Sever-Sent Events并使用库libSSE的项目:https://github.com/licson0729/libSSE-php

一个事件从数据库获取时间戳,一些事件使用它,然后更新数据库中的所述时间戳值。 PHP代码如下所示:

dev

它应该为更新函数提供旧值和新值,然后将更新函数发送给用户。但是如果db中的值是例如“2015-12-16 11:00:00”并且当前时间是“2015-12-16 15:11:00”,我得到这个输出:“2015-12-16 15:11:00 --- 2015-12-16 15:11:00“。

所以新值是两次而不是旧值,然后是新值。

如果我将三个查询放在一个单独的文件中并执行它们,我会得到想要的结果(“2015-12-16 11:00:00 --- 2015-12-16 15:10:00”)。 last_checked列的类型为timestamp,默认值为NULL,并且没有“on update current timestamp”属性。

有没有人知道为什么我在使用SSE时获得两次新的时间戳?

1 个答案:

答案 0 :(得分:0)

因为timestamp格式只会下降到几秒而不是几毫秒....而且更新显然不会花费一秒钟。尝试在更新和查询之间放置sleep(1)以确认更新日期。

     $a = mysqli_query($sql, "SELECT `last_checked` FROM `users` WHERE `name` = '".$username."';");
      $a = mysqli_fetch_row($a);

      mysqli_query($sql, "UPDATE `users` SET `last_checked` = now() WHERE `name` = '".$username."';");

sleep(1); //sleep for 1 second to prove my point

      $b = mysqli_query($sql, "SELECT `last_checked` FROM `users` WHERE `name` = '".$username."';");
      $b = mysqli_fetch_row($b);

      return json_encode($a[0]."---".$b[0]);