以下是此问题背后原因的链接: NOW() for DATETIME InnoDB Transaction guaranteed?
因此,为了确保包含任意数量查询的单个交易(例如 20 + 查询)在多个表中具有100%准确且一致的NOW()值,什么是使用NOW()(不是当前的TIMESTAMP)分配变量等效的DATETIME的PHP方式。
答案 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)";
...
这可以避免任何时区或本地日期格式的问题。