Вот ссылка на причину этого вопроса: NOW() для гарантированной транзакции DATETIME InnoDB?
Таким образом, чтобы гарантировать, что одна транзакция с любым количеством запросов (например, 20+ запросов) имеет 100% точное и согласованное значение NOW() в нескольких таблицах, какова php способ назначить переменной эквивалент DATETIME, используя NOW() (не текущий TIMESTAMP).
Ответ 1 · рейтинг 18 · elxordi
Один из способов может быть:
<?php
$nowFormat = date('Y-m-d H:i:s');
$sql = "INSERT INTO table SET field='$nowFormat'";
$sql2 = "INSERT INTO table SET field='$nowFormat'";
...
Ответ 2 · рейтинг 4 · Marc B
Сделайте это в MySQL, чтобы вообще не задействовать PHP:
select @now := now();
insert into .... values (@now)
select from ... where x=@now
etc....
Ответ 3 · рейтинг 3 · Ariel
Ты можешь сделать:
<?
$now = time();
$sql = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
$sql2 = "INSERT INTO table SET field=FROM_UNIXTIME($now)";
...
Это позволяет избежать любых возможных проблем с часовыми поясами или локальными форматами даты.