在PHP中获取DATETIME并将其发布到MySQL以实现事务一致性

时间:2012-04-12 18:02:34

标签: php mysql datetime transactions innodb

以下是此问题背后原因的链接: NOW() for DATETIME InnoDB Transaction guaranteed?

因此,为了确保包含任意数量查询的单个交易(例如 20 + 查询)在多个表中具有100%准确且一致的NOW()值,什么是使用NOW()(不是当前的TIMESTAMP)分配变量等效的DATETIME的PHP方式。

3 个答案:

答案 0 :(得分:17)

一种方法可能是:

<?php
$nowFormat = date('Y-m-d H:i:s');
$sql = "INSERT INTO table SET field='$nowFormat'";
$sql2 = "INSERT INTO table SET field='$nowFormat'";
...

答案 1 :(得分:4)

在MySQL中执行此操作,因此您根本不涉及PHP:

select @now := now();

insert into .... values (@now)
select from ... where x=@now
etc....

答案 2 :(得分:2)

你可以这样做:

<?
$now = time();
$sql = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
$sql2 = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
...

这可以避免任何时区或本地日期格式的问题。