Wieso erscheint die Meldung: columne 'xx' cannot be null ?

bibibär

Grünschnabel
Hi @all,

ich habe hier ein Problemchen und zwar erscheint beim einfügen eines neuen Datensatzes in mySQL Datenbank mit einem php-script folgende Meldung:

Column 'xyz' cannot be null

...und es wird kein Datensatz gespeichert! Ich müßte alle Felder ausfüllen, damit es klappt.
Bei einem anderen Script, welches in die selbe Datenbank und in die selben Tabellen schreibt, funktioniert es, Dort kann ich felder leer lassen?

Wieso ist das so?
Ich vermute, daß diese Zeilen schuld sind, ich weiß aber nicht was ich da ändern soll (Code mit Dreamweaver geschrieben)
PHP:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

Liege ich mit meiner Vermutung richtig oder woran liegt es?

Gruß
bibibär
 
Vermutlich besitzt die Spalte das NOT NULL-Attribut und darf deshalb nicht NULL sein.
 
Naja die Fehlermeldung heist ja nix anderes als, dass eine Spalte nicht Null sein kann. Deshalb wuerd ich den Fehler in der Datenbank bzw. in ihrer Administration suchen.
 
Das verstehe ich jetzt nicht :confused:

Not Null = Feld darf nicht leer bleiben, oder!?

Ich habe aber schon mehrmals Formulardaten gesendet und gespeichert obwohl nicht alle Felder beschrieben waren und obwohl das Format: not null war.

Wieso kann ich mal speichern und mal nicht? Das muss doch mit dem Skript zusammenhängen nur wie?

Schönen Dank für die schnelle Antwort ;)
 
Das NOT NULL-Attribut bedeutet, dass die Spalte kein NULL-Wert enthalten oder ihr zugewiesen werden darf. Andere Werte wie etwa eine leere Zeichenkette oder numerisch Null sind aber erlaubt, obwohl als dasselbe aufgefasst werden können: kein brauchbarer Wert vorhanden.
 
hi gumbo,

was ich nicht verstehe ist...
...Beispiel:
Der Wert des Formular-Feldes Email wird sofort in 2 Tabellen geschrieben (Userdaten und Kundendaten).
Beim Eintrag in die Tabelle Userdaten meckert er, wenn irgendein Formular-Feld leer bleibt und es erfolgt kein Eintrag in die DB (columne "xyz" cannot be null).
Gebe ich nun die Email-Adresse an funktioniert es. Er speichert die Email in Tabelle Userdaten und in Tabelle Kundendaten, obwohl in Kundendaten noch mehrere Spalten leer sind! Wieso meckert er hier nicht?

In einem anderen Forum hat jemand genau das gleiche Problem.Link: http://www.dreamworker.de/foren/showthread.php?t=18269.
Der GetSQLValueString ist daran schuld, aber wie kann ich den anpassen? Habe jetzt erstmal fast alle Spalten auf NULL gesetzt, damits erstmal funktioniert.
Kann man solche Einstellungen auch noch vornehmen, wenn schon Daten in der DB sind?

Gruß
 
Zurück