9

这是此问题背后原因的链接: NOW() for DATETIME InnoDB Transaction 是否保证?

因此,为了确保具有任意数量查询(例如20 多个查询)的单个事务在多个表中具有 100%准确和一致的 NOW()值,使用 NOW() 分配等效于 DATETIME 的变量的 php 方法是什么(不是当前的时间戳)。

4

3 回答 3

18

一种方法可能是:

<?php
$nowFormat = date('Y-m-d H:i:s');
$sql = "INSERT INTO table SET field='$nowFormat'";
$sql2 = "INSERT INTO table SET field='$nowFormat'";
...
于 2012-04-12T18:39:04.887 回答
4

在 MySQL 中做,所以你根本不涉及 PHP:

select @now := now();

insert into .... values (@now)
select from ... where x=@now
etc....
于 2012-04-12T18:34:04.700 回答
3

你可以做:

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

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

于 2013-06-06T08:09:05.313 回答