获取php中的DATETIME并将其发布到MySQL以确保事务一致性
以下是这个问题背后的原因链接:获取php中的DATETIME并将其发布到MySQL以确保事务一致性,php,mysql,datetime,transactions,innodb,Php,Mysql,Datetime,Transactions,Innodb,以下是这个问题背后的原因链接: 因此,为了确保具有任意数量查询(20+例如查询)的单个事务在多个表中具有100%准确且一致的NOW()值,php如何使用NOW()分配与DATETIME等价的变量(而不是当前时间戳)。在MySQL中执行此操作,因此,您根本不涉及PHP: select @now := now(); insert into .... values (@now) select from ... where x=@now etc.... 一种方法可以是: <?php $now
因此,为了确保具有任意数量查询(20+例如查询)的单个事务在多个表中具有100%准确且一致的NOW()值,php如何使用NOW()分配与DATETIME等价的变量(而不是当前时间戳)。在MySQL中执行此操作,因此,您根本不涉及PHP:
select @now := now();
insert into .... values (@now)
select from ... where x=@now
etc....
一种方法可以是:
<?php
$nowFormat = date('Y-m-d H:i:s');
$sql = "INSERT INTO table SET field='$nowFormat'";
$sql2 = "INSERT INTO table SET field='$nowFormat'";
...
您可以执行以下操作:
<?
$now = time();
$sql = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
$sql2 = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
...
如果PHP服务器和Mysql服务器没有相同的默认时区,请小心。请参阅我的答案,以获得没有此问题的替代方案。