Timestamp wird nicht abgespeichert.

Tia, das default CURRENT_TIMESTAMP heisst dass bei einem neuen Datensatz automatisch das Jetzt eingetragen wird.
Bei einem UPDATE wird dank on update CURRENT_TIMESTAMP auch JETZT eingetragen.

Und? Wie sieht dein generiertes SQL aus?
 
Aber genau das wundert mich, weil ich das beim Erstellen des Feldes nicht angegeben habe und ich kann es auch nicht rückgängig machen?

Was meinst Du mit meinem generierten SQL? Die "INSERT"-Abfrage?

Ich weiß nicht, wie ich mir diese per MySQLi ausgeben kann. Ich bereite die Query so vor:

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();

Er scheint da komisches SQL zu generieren:

PHP:
SQL-Befehl:

ALTER TABLE  `event` CHANGE  `zeitp`  `zeitpunkt` TIMESTAMP NOT NULL DEFAULT 0000 -00 -0000 :00 :00

MySQL meldet: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-00-00 00:00:00' at line 1
 
Zuletzt bearbeitet:
Du hast es falsch verstanden oder ich habe mich blöd ausgedrückt. Das Alter Table ist der Befehl, der ausgeführt wird, wenn ich das "ON UPDATE CURRENT TIMESTAMP" entfernen will.

Wie gebe ich das Insert-Statement bei Mysqli aus? Ich kann ja nicht einfach "echo $sql" schreiben, oder?
 
Wie gebe ich das Insert-Statement bei Mysqli aus? Ich kann ja nicht einfach "echo $sql" schreiben, oder?
Leider. Darum nehme ich auch fast nie mysqli als Klasse, weils sich damit so schlecht debuggen lässt.
Musst wohl über das log von MySQL machen
http://stackoverflow.com/questions/2303972/how-can-i-view-the-contents-of-a-prepared-statement

Und führ dein ALTER TABLE mahl ohne den DEFAUTL durch... (und sonst ohne die Leerschläge im Defautl-Wert: '0000-00-00 00:00:00')
 
Stimmt ja mktime war es.. mk verbinde ich immer mit make darum..

Stimmt strtotime ist auch eine Möglichkeit.

Ich mache es im normalfall auch damit..

Da es schneller geht ;) Aber nach dem obrigen Beitrag mit mktime
fiel mir das als erstes ein

;)

LG
 
Moin,
omg. So ich habe das mysteriöse Problem gelöst.

Es lag an dieser Stelle:

PHP:
$eintrag->bind_param('iii', $this->art, $this->zeitpunkt, $this->creatorid);

$this->zeitpunkt ist natürlich in dem neuen Format kein Integer sondern ein String. Daher muss man die Typen als 'isi' deklarieren.

Nun geht es.

Vielen Dank an Euch alle!
 
Zurück