Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Получите DATETIME в php и отправьте его в MySQL для согласованности транзакций

Автор вопроса: MaverickОтветов: 3

Вот ссылка на причину этого вопроса: NOW() для гарантированной транзакции DATETIME InnoDB?

Таким образом, чтобы гарантировать, что одна транзакция с любым количеством запросов (например, 20+ запросов) имеет 100% точное и согласованное значение NOW() в нескольких таблицах, какова php способ назначить переменной эквивалент DATETIME, используя NOW() (не текущий TIMESTAMP).

phptransactionsdatetimeinnodb

Ответы

Ответ 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)";
...

Это позволяет избежать любых возможных проблем с часовыми поясами или локальными форматами даты.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы