Rouven: werte in datenbank eintragen

Beitrag lesen

Ich fang mal hiermit an:

$query="INSERT INTO kalenderdaten VALUES(NULL,'$Datum','$Uhrzeit','$Beschreibung')";
warum gibt man hier NULL an? es ist doch eh von der datenbank her geregelt

Wenn man beim INSERT NICHT die Spalten angibt, dann müssen auch für alle Spalten (und in der richtigen Reihenfolge) Werte zugewiesen werden. Deine Tabelle hat vier Spalten, das Statement
INSERT INTO kalenderdaten VALUES ('$Datum', '$Uhrzeit', '$Beschreibung')
hätte der Datenbank Fragezeichen ins Gesicht getrieben: welcher Wert ist denn hier wofür?? Um das verwenden zu können brauchst du eben genau die Spaltennamen...

Wegen der Sache mit dem Primary-Key, da interpretierst du zu viel hinein.

  1. NULL vs. NOT NULL
    Jeder Spalte einer Tabelle kann als NULL oder eben als NOT NULL festgelegt werden. Umgangssprachlich ist NOT NULL nichts anderes als eine Pflichtangabe, während man eine NULL-bare Spalte getrost ignorieren kann.

  2. PRIMARY KEY
    Durch dieses Flag wird der Datenbank signalisiert, dass die angegebenen Spalte(n) (ja, dürfen auch mehrere sein) zusammen einen eindeutigen Wert in jeder möglichen Befüllung der Tabelle annehmen. Per Definition muss hierbei gelten, dass keiner der Werte NULL sein darf (deswegen setzt PHPMyAdmin dir das  auch automatisch).

  3. DEFAULT
    Du kannst für jede Spalte einen Default-Wert angeben. Wenn du an die Datenbank rantrittst und bei einem INSERT keinen Wert angibst, wird dieser Wert automatisch eingetragen. Ist z.B. sehr praktisch wenn man einen Zeitstempel "last modified" mitführen möchte. Man setze den Defaultwert auf NOW oder CURRENT TIMESTAMP oder was auch immer die jeweilige Datenbank da gerne nimmt und schon spart man sich das Eintragen per Skriptsprache oder die Angabe beim SQL-Befehl.

MfG
Rouven

--
-------------------
ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|