PHP und MySQL

crasher14

Grünschnabel
Ich möchte einen Datensatz in einer MySQL Tabelle ändern, dabei möchte ich dass bestimmte Felder je nach Inhalt wieder auf SQL-NULL gesetzt werden.

Hat also der Benutzer den Wert eines Feldes z.B. auf " " (leer) gesetzt, möchte ich in die Datenbank NULL schreiben. Leider gelingt mir dies bisher nicht. Wie muß die Zuweisung zur Variablen mit PHP lauten, damit ich später mittels "Update .... set Feld = $Variable" ein NULL Wert in die Tabelle bekomme?

Über jede Hilfe freue ich mich.

Peter
 
crasher14 hat gesagt.:
Ich möchte einen Datensatz in einer MySQL Tabelle ändern, dabei möchte ich dass bestimmte Felder je nach Inhalt wieder auf SQL-NULL gesetzt werden.

Hat also der Benutzer den Wert eines Feldes z.B. auf " " (leer) gesetzt, möchte ich in die Datenbank NULL schreiben. Leider gelingt mir dies bisher nicht. Wie muß die Zuweisung zur Variablen mit PHP lauten, damit ich später mittels "Update .... set Feld = $Variable" ein NULL Wert in die Tabelle bekomme?

Über jede Hilfe freue ich mich.

Peter
Hallo,
mein Tipp:
if ($Variable==" ") {$Variable="null"};


Bis dann
 
Dank für die sehr schnelle Antwort, leider funktioniert das nicht wie gewünscht.
Das SQL-NULL scheint etwas anderes zu sein, es wird auch in der Tabelle anderes (kursiv) dargestellt. Es ist der Initalwert des Feldes und ich hab keine Idee wie ich den mit PHP erzeugen kann. Hat jemand das gleiche Problem?

Gruß Peter
 
Hatte ich vorher auch schon ausprobiert, hat aber ebenfalls nicht den gewünschten Effekt! Liegt es an mir, meiner Installation oder an etwas anderem?

Gruß Peter
 
Zuerst Danke für Eure Hilfe!
Ich habe das Problem nun weiter eingekreist.
Die Zuweisung innerhalb von PHP lautet, wie ihr es mir schon gesagt habt, $Variable = NULL. Die Abfrage is_null($Variable) liefert dann WAHR zurück.

Allerdings kriege ich diesen Wert nicht in die Tabelle. Folgende Zuweisung:
$PTore = NULL;
$sql = "Insert into sql_hspielbericht
(Mannschaft, Verein, SpielNr, Spielzeit, SpielerNr, Tore, Note)
Values('$PMs','001','$PGame','$PSz','$PSNr','$PTore',NULL)";
führt nur dazu dass in der Tabelle das Feld Tore mit 0 steht, das Feld Note hingegen NULL bekommen hat. Aus verschiedenen Gründen kann ich aber nicht jeweils ein anderes SQL-Statement erzeugen wenn der NULL Wert eingetragen werden soll.
Hat vielleicht noch jemand eine Idee Mir gehen sie jetzt langsam aus.

Gruss Peter :confused:
 
PHP:
$sql = "Insert into sql_hspielbericht
(Mannschaft, Verein, SpielNr, Spielzeit, SpielerNr, Tore, Note)
Values('$PMs','001','$PGame','$PSz','$PSNr',".((is_null($PTore))?"NULL":"'$PTore'").",NULL)";
NULL ist ein reserviertes Wort in SQL und darf nicht in Hochkomma, da es sonst als String interpretiert wird. Ein String ohne Ziffern gibt als INT dann die Zahl 0.

EDIT: Alternativ kannst Du statt is_null auch empty (evtl. in Verbindung mit trim) nehmen, dann brauchst Du vorher null nicht explizit zuweisen:
PHP:
$sql = "Insert into sql_hspielbericht
(Mannschaft, Verein, SpielNr, Spielzeit, SpielerNr, Tore, Note)
Values('$PMs','001','$PGame','$PSz','$PSNr',".((empty(trim($PTore)))?"NULL":"'$PTore'").",NULL)";
 
Danke, Danke, Danke!

@hpvw das war die Lösung!
Super, damit bin ich ein großes Stück weiter und wieder etwas schlauer geworden. Vielen Dank für Eure schnelle und hilfreiche Unterstützung!

Gruß Peter
 
Zurück