PHP MySQL自动插入时间戳

11

假设有一个名为auto_parts的表格,其中包含以下字段:id、part、price、timestamp。而我使用php插入新的一行数据,代码如下:

$query = "insert into auto_parts(id, part, price, timestamp)
  values(1, 'axle', 200)"
mysql_query($query);

那会自动添加时间戳吗? 还是我需要自己插入时间戳的值?


你的表结构是什么? - Virendra
4个回答

24

你需要做的是在SQL中将 timestamp 声明为类型。

timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

并修改查询以

$query = "insert into auto_parts(id, part, price)
  values(1, 'axle', 200)"
mysql_query($query);

2
每个表格只能使用一个时间戳变量!! - k.honsali
2
每个表只能有一个自动时间戳,无论是通过DEFAULT还是UPDATE(尽管我认为在最近的MySQL版本中已经改变了)。您可以拥有多个时间戳列,只要不超过一个自动设置/更新。http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html - Sven Viking

11
$query = "insert into auto_parts(id, part, price, timestamp)
  values(1, 'axle', 200, 'NOW()')"
mysql_query($query);

当您有多个timestamp列(其中一个是自动的,请参见Sven Viking评论了解详细信息)并且想要在另一个时间戳列中更新/插入新数据时,这非常方便。 - Romain

1

0

我知道这个问题已经有答案了,所以我在结合所有答案并做出一些解释。 有两种方法可以做到这一点:

  1. 更改你的表格,将 timestamp 列设置为默认的 CURRENT_TIMESTAMP

ALTER TABLE tablename MODIFY timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

并修改你的查询语句,像这样自动插入 timestamp

$query = "insert into auto_parts(id, part, price) values(1, 'axle', 200)"; mysql_query($query);

  1. 如果你有多个 timestamp 表格,则可以将其中一个作为当前时间戳,并对其他一个使用以下方式

ALTER TABLE tablename MODIFY timestamp TIMESTAMP NOT NULL

并修改你的查询语句,像这样

$query = "insert into auto_parts(id, part, price, timestamp) values (1, 'axle', 200, now())"; mysql_query($query);


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