2012-12-31 10 views
5

Mam tabelę bazy danych timetable z polem DATETIME o nazwie created_on.Funkcja NOWetime() nie działa z instrukcjami przygotowanymi przez PDO-MYSQL?

created_on DATETIME, 
notes VARCHAR(255) NOT NULL 

korzystać z funkcji NOW() wstawić aktualny czas poprzez PDO przygotowane oświadczeń.

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

Więc po związaniu wartości i realizacji przygotowanego oświadczenia ...

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

... kolumna w tabeli MySQL notes pisze oczekiwane dane, ale kolumna created_on produkuje ...

0000-00-00 00:00:00 

Nie chcę używać znacznika czasu epoki Unix. Więc jak mogę uzyskać DATETIME w funkcji NOW() do pracy?

Odpowiedz

8

nie przechodzą NOW() jako parametr,

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

więc konieczne będzie tylko do związania się z uwagami.

2

Przekazujesz NOW() jako ciąg znaków, a nie wyrażenie mysql.

zastosowanie jako to:

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

Czasami może to być warunkowe, więc chcesz, aby wartość była teraz inna niż teraz. – Miguel

1

Słowo kluczowe NOW() jest zmienną zarezerwowaną dla MySQL i wymaga definicji SQL, której nie można powiązać. Wszystkie słowa kluczowe SQL (SELECT, FROM, WHERE, nazwy kolumn itp.) Nie mogą być powiązane, musi przejść do deklaracji SQL.