在创建新行条目时从mysql行检索时间戳


Retrieving timestamp from mysql row upon creation of new row entry

是否有效?

    <?php
        $timestamp = mysql_query("INSERT INTO column1 (entry1, entry2) 
                                  VALUES ('$entry1', '$entry2') 
                                  AND SELECT timestamp");
    ?>

timestamp是mysql的一个列,在创建行时生成一个时间戳。

。-我需要指定创建"时间戳"行吗?(我认为它是可以的,配置为自己做)这两个动作可以在同一个查询中执行吗?如果没有,我该怎么做呢?我想确保我得到了时间戳,因为我稍后将在代码中使用它作为这个条目的唯一标识符。不然我怎么能得到它呢?(假设在许多其他行条目中可能存在多个相似的条目)。

谢谢!

这取决于您需要这些信息的目的。如果你需要它存储对其他行/实体,你想要它是一致的,然后我会存储日期在PHP(可能一次在一个web应用程序的每个请求),然后使用整个,例如

$currentTimestamp = time();
$timestamp = mysql_query("INSERT INTO column1 (entry1, entry2, timestamp_col) 
                              VALUES ('$entry1', '$entry2', $currentTimestamp);

这样无论你在哪里使用时间戳都是一致的。您的请求不必花费几秒钟的时间来改变时间戳。

即使你不把它存储在其他任何东西上,如果你需要检索信息,你仍然可能想要使用这个方法,因为唯一的其他方法是两个查询,这可能会更有效。

这并不意味着自动填充MySQL日期字段没有意义,因为如果你只是记录信息以便稍后检索,那么在MySQL中完成它当然是有意义的。

这不是一个有效的mysql语句。作为一个选项,你可以使用PHP函数来代替。

$sql = "INSERT INTO column1 (entry1, entry2) VALUES ('$entry1', '$entry2')";
$timestamp = mysql_query($sql) ? time() : null;

不,这不是一个有效的语法。

另一种方法是将now()赋值给一个变量,并在时间戳列中使用它,而不是自动生成的值。

set @now = now();
insert into your_table (timestamp_column) values (@now);
select @now();

如果您想获得时间戳单元格中的时间戳值,则必须获取插入id,然后使用最后一个插入id获取该id的时间戳。让说,

$query = mysql_query('INSERT INTO my_table("username","password") VALUES("falcon","test") ');
$last_id = mysql_insert_id($query);  // This gets your id of the row inserted by $query
$timstamp = mysql_query('SELECT timestamp FROM my_table where id = "'.$last_id.'"')