这是此问题背后原因的链接: NOW() for DATETIME InnoDB Transaction 是否保证?
因此,为了确保具有任意数量查询(例如20 多个查询)的单个事务在多个表中具有 100%准确和一致的 NOW()值,使用 NOW() 分配等效于 DATETIME 的变量的 php 方法是什么(不是当前的时间戳)。
这是此问题背后原因的链接: NOW() for DATETIME InnoDB Transaction 是否保证?
因此,为了确保具有任意数量查询(例如20 多个查询)的单个事务在多个表中具有 100%准确和一致的 NOW()值,使用 NOW() 分配等效于 DATETIME 的变量的 php 方法是什么(不是当前的时间戳)。
一种方法可能是:
<?php
$nowFormat = date('Y-m-d H:i:s');
$sql = "INSERT INTO table SET field='$nowFormat'";
$sql2 = "INSERT INTO table SET field='$nowFormat'";
...
在 MySQL 中做,所以你根本不涉及 PHP:
select @now := now();
insert into .... values (@now)
select from ... where x=@now
etc....
你可以做:
<?
$now = time();
$sql = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
$sql2 = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
...
这避免了时区或本地日期格式的任何可能问题。