2012-04-12 19 views
6

Dưới đây là một liên kết đến lý do đằng sau câu hỏi này: NOW() for DATETIME InnoDB Transaction guaranteed?Nhận DATETIME trong php và gửi nó tới MySQL cho quán giao dịch

Vì vậy, để đảm bảo một giao dịch duy nhất với bất kỳ số lượng các truy vấn (20+ truy vấn cho ví dụ) có giá trị chính xác và nhất quán NOW() trên nhiều bảng, cách php để gán một biến tương đương với DATETIME bằng cách sử dụng NOW() (không phải là TIMESTAMP hiện tại).

Trả lời

14

Một cách có thể là:

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

Hãy cẩn thận nếu máy chủ PHP và máy chủ Mysql không có múi giờ mặc định giống nhau. Xem câu trả lời của tôi cho một thay thế mà không có vấn đề này. – Ariel

4

Do nó trong MySQL, vì vậy bạn không liên quan đến PHP tại tất cả:

select @now := now(); 

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

Bạn có thể làm:

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

này tránh bất kỳ vấn đề có thể có của múi giờ, hoặc định dạng ngày địa phương.

Các vấn đề liên quan