在插入时返回MySQL时间戳

3

当我在PHP中执行一个插入语句到MySQL数据库时,有没有办法返回自动生成的时间戳,还是说我需要另外一次调用数据库来检索数据?

编辑:我忘了MySQL不使用纪元日期。我决定只使用自动递增的整数和存储过程。


什么是“自增时间戳”?这可以通过存储过程实现。 - John Woo
1
最多你只能通过last_insert_id()获取新记录的ID,然后可以在select语句中使用该ID来获取时间戳。 - Marc B
时间戳是主键,其默认值为CURRENT_TIMESTAMP。为了最小化数据库查询,我希望能够返回其值而无需再次查询数据库。 - spuy767
仅使用近似时间戳是否足够?因此,您可以通过PHP获取当前时间,然后执行插入查询。 - Benjamin M
谁会莫名其妙地踩合理的问题?针对Benjamin的回答,同时进行查询会使在代码中生成时间戳成为一个坏主意,因为它们是PK。 - spuy767
4个回答

2

您需要发出单独的请求才能获取该信息。仅在执行INSERT操作时,才能获取自动递增表的最后插入ID。


这基本上是我所预期的。至少查询很小。 - spuy767

1
使用多语句查询。
  1. 将当前时间戳选择到一个变量中。
  2. 插入带有时间戳的行。
  3. 返回(选择)该变量到php。

0
据我所知,如果将ID设置为AUTO_INCREMENT,则可以获取最后插入的ID。但是对于时间戳,我建议您创建一个存储过程,这样您就只需要在数据库上进行单个请求。请记住,连接到数据库是很耗费资源的。

因此有这个问题。我不想再打开另一个查询。总查询数肯定很少,可能并不重要,但这并不是粗心的借口。 - spuy767
你只需要调用该过程一次,无需再打开另一个查询。 - John Woo
1
我只是同意你的观点。 - spuy767
我正在添加额外的信息:D - John Woo

0

在进行插入操作后,您可以返回一个最后插入的ID,例如:

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

这在常识上是可行的。但如果需要精确时间,“现在”的时间可能比刚插入数据库行中的时间晚或早。这可能是由于文件服务器和/或数据库服务器的工作负载和/或流量过大造成的。但无论如何,对于普通人的交互来说,这不会构成任何威胁 :) - user1467267
我以一般的方式思考后,改变了我的答案并返回“最后插入的ID”以实现“唯一性”。 - Rohan Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接