2015-12-21 34 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

是的,這就是爲什麼我也不建議。讓我更新我的答案並添加一個紅色警報。 –