2015-12-21 73 views
2

假设您的Web服务器与数据库服务器分离。他们的时钟可能无法正确同步(下降到毫秒等)。在MySQLi中获取NOW()的值PHP

您执行的"INSERT INTO sometable (VALUE,VALUE2,DATETIME) VALUES ("something","something else",NOW());"

有没有什么办法让由MySQL所产生回PHP时间戳此类插件?与使用$sqlObject->insert_id获取最后插入行的AUTO_INCREMENT值时的方式相同。

编辑: 我知道我可以只使用insert_id并运行SELECT获得时间戳,但是这需要我再跑声明。我想知道在一个声明中是否可能。

+0

不完全确定如何将值返回给PHP将有助于任何事情。你将能够找出差异,但那又如何?只需将两台机器同步到NTP服务器即可。 –

+0

您可以编写存储过程,将数据插入表中,然后返回插入的最后一条记录。 –

+0

@JonStirling时间戳用作“密码”以便能够编辑该行。如果你有正确的时间戳,这意味着没有其他人在打开它之后(在应用程序中)更改了该行。因此,如果我无法返回确切的时间戳,客户端将无法再次编辑该行,直到手动刷新(重新加载完全不同的函数中的所有时间戳)为止。 – nickdnk

回答

0

您无法获得直接价值,但您可以通过两种方式实现。

1)选择now()作为cur_time。并在第二个查询中使用它的值并使用它。 [它可能你可能得到不同的时间为这个解决方案,所以我会建议不要去这个解决方案,更好地去与选项2.]

2)插入数据后获取其ID和进行查询并获取插入的日期时间。

如果您的PHP和MYSQL服务器的日期时间相同,那么您可以使用php的日期函数来获取当前日期/时间。

+0

您的第一个建议**可能会在边缘案例中给出两个不同的结果,因为时间戳可能会从一个NOW()增加到下一个。 – nickdnk

+0

是的,这就是为什么我也不建议。让我更新我的答案并添加一个红色警报。 –