2013-03-02 147 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。