2012-04-12 3 views
6

Hier ist ein Link zu dem Grund für diese Frage: NOW() for DATETIME InnoDB Transaction guaranteed?DATETIME- in PHP Erhalten und per Post an MySQL für Transaktionskonsistenz

So eine einzelne Transaktion mit einer beliebigen Anzahl von Anfragen zu gewährleisten (20+ Anfragen für Beispiel) hat eine 100% genaue und konsistente JETZT() Wert über mehrere Tabellen, was ist die php Weg, um eine Variable Äquivalent von DATETIME mit NOW() (nicht aktuelle TIMESTAMP) zuweisen.

Antwort

14

Ein Weg sein könnte:

<?php 
$nowFormat = date('Y-m-d H:i:s'); 
$sql = "INSERT INTO table SET field='$nowFormat'"; 
$sql2 = "INSERT INTO table SET field='$nowFormat'"; 
... 
+0

Seien Sie vorsichtig, wenn der PHP-Server und der Mysql-Server nicht dieselbe Standardzeitzone haben. Siehe meine Antwort für eine Alternative ohne dieses Problem. – Ariel

4

Tun Sie es in MySQL, so dass Sie PHP beinhalten gar nicht:

select @now := now(); 

insert into .... values (@now) 
select from ... where [email protected] 
etc.... 
2

Sie tun können:

<? 
$now = time(); 
$sql = "INSERT INTO table SET field=FROM_UNIXTIME($now)"; 
$sql2 = "INSERT INTO table SET field=FROM_UNIXTIME($now)"; 
... 

Diese vermeidet mögliche Probleme mit Zeitzonen oder lokalen Datumsformaten.

Verwandte Themen