Timestamp wird nicht abgespeichert.

Trash

Erfahrenes Mitglied
Hallo,
ich habe eine Tabelle in meiner Datenbank, die folgende Felder umfasst:

PHP:
CREATE TABLE `event` (
  `id` int(10) NOT NULL auto_increment,
  `art` int(2) NOT NULL,
  `zeitpunkt` timestamp NULL default NULL,
  `zeit` timestamp NOT NULL default '0000-00-00 00:00:00',
  `creator_id` int(8) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

Nun habe ich eine Funktion, die den Timestamp nach den Eingaben ermittelt:

PHP:
$obj->zeitpunkt =  mktime($_POST['stunde'], $_POST['minute'],0,$_POST['monat'],$_POST['tag'],$_POST['jahr']);

In deer Funktion, die auf die DB zugreift wird es so eingetragen:

PHP:
$sql = "INSERT into `event` (`art`,`zeitpunkt`,`zeit`, `creator_id`) VALUES (?, ?, CURRENT_TIMESTAMP, ?);";
		$eintrag = $db->prepare($sql);
		$eintrag->bind_param('iii', $this->art, $this->zeitpunkt, $this->creatorid);
		$eintrag->execute();

echo $this->zeitpunkt zeigt auch einen Timestamp an, aber in der DB steht nur: 0000-00-00 00:00:00

Was mache ich falsch? Seht ihr einen Fehler?

Danke!
 
Wie du siehst ist es hier das DateTime Format von MySQL und nicht der Unix Timestamp...
YYYY-MM-DD HH:MM:SS
D. h. dementsprechend formatieren oder das Feld in der Datenbank ändern.
 
moin,
genau das verstehe ich nicht. Wenn ich das MySQL-DB-Feld als Timestamp deklariere, dann denke ich, dass er dort die Werte im UNIX-Timestamp Format annimmt. Wenn ich den Unix-Timestamp verwenden möchte, muss ich dann ein Integer-Feld nehmen?

Yaslaw, auch deinen Tipp könnte ich mal ausprobieren...
 
Die Funktion dürfte [phpf]mktime[/phpf] heißen und ich würde hier eher zu [phpf]strtotime[/phpf] tendieren oder mit PHP sogar zur DateTime-Klasse.
 
Hm,
das Format des Datums ist: 2011-01-19 20:00:00 und es wird trotzdem nicht in die DB geschrieben. Wie kann das sein?
 
Moin,
es gibt keine Fehlermeldung. Alles wird korrekt abgespeichert, nur der "zeitpunkt" nicht. Dort steht 0000-00-00 00:00:00.

Tabelle:
Code:
CREATE TABLE `event` (
  `id` int(10) NOT NULL auto_increment,
  `art` int(2) NOT NULL,
  `zeitpunkt` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `zeit` timestamp NOT NULL default '0000-00-00 00:00:00',
  `creator_id` int(8) NOT NULL,
  PRIMARY KEY  (`eid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

ich weiß aber nicht, warum dort dies steht 'CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'. Wenn ich das rausnehme und ein '0000-00-00 00:00:00' reinschreibe kommt beim Update eine Fehlermeldung...
 
Zurück