2012-12-31 40 views
5

Tôi có bảng cơ sở dữ liệu timetable với trường DATETIME được gọi là created_on.Hàm NOW() của ngày giờ không hoạt động với các câu lệnh chuẩn bị PDO-MYSQL?

created_on DATETIME, 
notes VARCHAR(255) NOT NULL 

Tôi sử dụng chức năng NOW() để chèn thời gian hiện tại thông qua các câu lệnh chuẩn bị PDO.

INSERT INTO timetable(created_on, note) 
VALUES(?, ?); 

Vì vậy, sau khi ràng buộc các giá trị và thực hiện các tuyên bố chuẩn bị ...

$notes ="This is a note..."; 
$values =array("NOW()", $notes); 
$stm->execute($values); 

... các notes cột trong bảng MySQL ghi dữ liệu dự kiến ​​nhưng cột created_on sản xuất ...

0000-00-00 00:00:00 

Tôi không muốn sử dụng dấu thời gian của dấu thời gian Unix. Vậy làm thế nào để tôi có được DATETIME trong chức năng NOW() để hoạt động?

Trả lời

8

không vượt qua NOW() như một tham số,

INSERT INTO timetable(created_on, note) VALUES(NOW(), ?); 

do đó bạn sẽ chỉ cần để ràng buộc các ghi chú.

$values =array($notes); 
2

Bạn đang chuyển NOW() làm chuỗi, không phải biểu thức mysql.

sử dụng như thế này:

INSERT INTO timetable(created_on, note) 
VALUES(now(), ?); 
+0

Nhưng đôi khi điều này có thể có điều kiện, vì vậy bạn muốn có giá trị hiện giờ là những người khác khác với bây giờ .. – Miguel

1

Từ khóa NOW() là một MySQL reserved biến và cần phải đi vào định nghĩa SQL, không thể ràng buộc. Tất cả các từ khóa SQL (SELECT, FROM, WHERE, tên cột, vv) không thể được ràng buộc, cần phải đi vào khai báo SQL.

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