2012-12-31 9 views
5

Ich habe eine Datenbanktabelle timetable mit einem DATETIME Feld namens created_on.Die NOW() -Funktion von Datetime funktioniert nicht mit vorbereiteten PDO-MYSQL-Anweisungen?

created_on DATETIME, 
notes VARCHAR(255) NOT NULL 

Ich verwende die NOW() Funktion die aktuelle Uhrzeit einfügen durch PDO-Anweisungen vorbereitet.

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

So, nachdem die Werte verbindlich und Ausführung der vorbereiteten Anweisung ...

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

... die notes Spalte in der MySQL-Tabelle schreibt die erwarteten Daten aber die created_on Spalte erzeugt ...

0000-00-00 00:00:00 

Ich möchte nicht den Unix-Epochen-Zeitstempel verwenden. Wie bekomme ich in der NOW() Funktion zu arbeiten?

Antwort

8

nicht passieren NOW() als Parameter,

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

so brauchen Sie nur die Noten zu binden.

2

Sie übergeben NOW() als Zeichenfolge, nicht mysql Ausdruck.

Verwendung als dies:

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

Aber manchmal kann dies bedingt sein, also wollen Sie einen Wert, der jetzt anders als jetzt ist. – Miguel

1

Das Schlüsselwort NOW() ist eine MySQL reservierte Variable und muss in die SQL-Definition gehen, kann nicht bind sein. Alle SQL-Schlüsselwörter (SELECT, FROM, WHERE, Spaltennamen usw.) können nicht gebunden werden, sondern müssen in die SQL-Deklaration gehen.

Verwandte Themen