2013-03-02 174 views
0

當我在PHP中對MySQL數據庫執行插入語句時,是否有辦法返回自動生成的時間戳,還是需要單獨調用數據庫來檢索數據?在插入時返回MySQL時間戳

編輯:我忘了MySQL不使用時代日期。我決定只使用一個自動增量整數和一個存儲過程。

+0

你是什麼意思* autoincremented timestamp *?這可以使用存儲過程完成。 – 2013-03-02 15:41:41

+1

沒有。您最多可以使用last_insert_id()取回新記錄的ID,然後您可以在select中使用該ID來獲取該時間戳。 – 2013-03-02 15:43:55

+0

時間戳是PK,它的默認值是CURRENT_TIMESTAMP。爲了儘量減少數據庫查詢,我希望能夠在不查詢數據庫的情況下返回它的值。 – spuy767 2013-03-02 15:45:05

回答

2

您需要提出一個單獨的請求來獲取該信息。執行INSERT時,只能得到自動增量表的最後一個插入ID。

+0

這是我所期望的。至少查詢很小。 – spuy767 2013-03-02 15:47:12

0

據我所知,最後插入的ID如果ID被設置爲AUTO_INCREMENT ed。但是對於時間戳,我建議您創建一個stored procedure,這樣您將只對數據庫有單個請求。請記住,連接到數據庫是昂貴的。

+0

因此,這個問題。我不想打開另一個查詢。總查詢數量一定很少,可能無關緊要,但它不是馬虎的藉口。 – spuy767 2013-03-02 15:57:56

+0

您不必打開另一個查詢。你只需要調用一次該程序。 – 2013-03-02 16:00:45

+1

我只是同意你的意見。 – spuy767 2013-03-02 16:04:15

0

您可以返回insertlast inserted id,如:

<?php 
$sql=mysql_query("INSERT INTO <TABLE> VALUES (?,?)"); 
return mysql_insert_id(); 
?> 
+0

這將以常識運行。但是,如果有波動並且需要確切的時間,那麼「現在」可能晚於或甚至早於剛剛插入的數據庫行中的那個時間。這可能是由於文件服務器和/或數據庫服務器上的繁重工作負載和/或流量造成的。但是,儘管如此;對於常見的人機交互,這不會構成任何威脅:) – 2013-03-02 15:48:07

+0

正如我以一般的方式思考它,所以我改變了我的答案,並將'返回最後一個插入ID'作爲唯一性。 – 2013-03-02 15:53:46

1

使用多語句查詢。

  1. 將當前時間戳選擇到變量中。
  2. 插入帶有時間戳的行。
  3. 返回(選擇)變量爲php。