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

时间:2011-12-24 10:03:25

标签: php mysql database timestamp

这有效吗?

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

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

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

谢谢!

4 个答案:

答案 0 :(得分:2)

我取决于你需要的信息。如果您需要将它存储在其他行/实体中并且您希望它保持一致,那么我会将日期存储在PHP中(可能在Web应用程序中按请求一次),然后在整个过程中使用它,例如

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

无论你在哪里使用时间戳,都会保持一致。您的请求不需要花费几秒钟就可以在时间戳内变化。

即使您没有将其存储在其他任何内容中,如果您需要检索该信息,仍然可能需要使用此方法,因为唯一的另一种方法是两个查询,这很可能会更有效。

这并不意味着自动填充MySQL日期字段永远不会有意义,因为您只是记录该信息以便稍后检索,然后在MySQL中进行此操作当然是有意义的。

答案 1 :(得分:1)

这不是有效的mysql语句。作为选项,您可以使用PHP函数。

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

答案 2 :(得分:1)

不,这不是有效的语法。

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

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

答案 3 :(得分:0)

如果要获取时间戳单元格中的时间戳值,则必须获取插入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.'"')
相关问题