2012-12-31 13 views
5

Ho una tabella di database timetable con un campo DATETIME denominato created_on.La funzione NOW() di Datetime non funziona con le istruzioni preparate da PDO-MYSQL?

created_on DATETIME, 
notes VARCHAR(255) NOT NULL 

a utilizzare la funzione NOW() per inserire l'ora corrente attraverso PDO istruzioni preparate.

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

Così, dopo il legame i valori e l'esecuzione della dichiarazione preparata ...

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

... la colonna notes nella tabella di MySQL scrive i dati previsti ma la colonna created_on produce ...

0000-00-00 00:00:00 

Non voglio usare il timestamp di epoca Unix. Quindi, come faccio a ottenere DATETIME nella funzione NOW() per funzionare?

risposta

8

non passare NOW() come parametro,

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

quindi sarà solo bisogno di legare le note.

$values =array($notes); 
2

Si sta passando NOW() come stringa, non espressione mysql.

uso come questo:

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

Ma a volte questo può essere condizionale, quindi vuoi che un valore sia ora diverso dagli altri ora .. – Miguel

1

La parola chiave NOW() è una variabile riservata MySQL e deve essere inserita nella definizione SQL, non può essere associata. Tutte le parole chiave SQL (SELECT, FROM, WHERE, Columns, ecc.) Non possono essere vincolate, devono essere inserite nella dichiarazione SQL.

Problemi correlati