Proplem mit Variablenübergabe na MySQL

Proplem mit Variablenübergabe na MySQL

am 27.10.2004 11:13:25 von Arno Blumenstein

Moin Alle

folgendes Szenario

ich lese, zum clonen eines Datensatzes diesen in meine Variablen ein.
Das sieht ungefair so aus.

$meinFeld = $Tabelle->field("meineSpalte")

nun ist es aber so das "meine Spalte" keinen Wert hat also in MySQL der Wert
NULL besteht.
Beim einfügen des neuen Datensatzes wird aber aus NULL = 0, nur das möchte
ich nicht.
Wie übergebe ich ohne grossen Aufwand IS NULL.


vielen Danke
cu Arno

Re: Proplem mit Variablenübergabe na MySQL

am 27.10.2004 11:27:11 von Tobias Kutzler

Arno Blumenstein schrieb:

> Moin Alle
>
> folgendes Szenario
>
> ich lese, zum clonen eines Datensatzes diesen in meine Variablen ein.
> Das sieht ungefair so aus.
>
> $meinFeld = $Tabelle->field("meineSpalte")
>
> nun ist es aber so das "meine Spalte" keinen Wert hat also in MySQL der Wert
> NULL besteht.
> Beim einfügen des neuen Datensatzes wird aber aus NULL = 0, nur das möchte
> ich nicht.

Ich vermute, dass bei der Erstellung der Tabelle das Feld mit einem
Standardwert belegt wurde. So wird also immer ein Wert (eben die 0)
eingetragen.

> Wie übergebe ich ohne grossen Aufwand IS NULL.

Gar nicht. Wie willst Du etwas übergeben, was es nicht gibt? NULL
bedeutet Nichts, schwarzes Loch, was auch immer. D.h., wenn in der
Spalte Nullwerte erlaubt sind und kein Standardwert eingetragen wird,
dann wird auch bei einem Insert nichts eingetragen. Beim auslesen
solltest Du dann aber auf NULL testen, um keine böse Überraschung zu
erleben, wenn Du mit den Werten, die in der Spalte stehen könnten
weiterarbeiten möchtest.

Wie gesagt, überprüfe mal den Standardwert der Spalte und lösche ihn,
wenn vorhanden.
>
>
> vielen Danke
> cu Arno
>
>

Ciao,
Tobias

Re: Proplem mit Variablenübergabe na MySQL

am 27.10.2004 11:45:25 von Arno Blumenstein

Hallo Tobias

> Ich vermute, dass bei der Erstellung der Tabelle das Feld mit einem
> Standardwert belegt wurde. So wird also immer ein Wert (eben die 0)
> eingetragen.

Deine Vermutung ist leider falsch. Bei einem stinknormalen insert über
Formular werden nicht ausgefüllte Spalten auch nicht mit Default "0" belegt.
Diese "0" Übergabe passiert nur beim clonen eines Datensatzes

>> Wie übergebe ich ohne grossen Aufwand IS NULL.
>
> Gar nicht. Wie willst Du etwas übergeben, was es nicht gibt? NULL bedeutet
> Nichts, schwarzes Loch, was auch immer. D.h., wenn in der Spalte Nullwerte
> erlaubt sind und kein Standardwert eingetragen wird, dann wird auch bei
> einem Insert nichts eingetragen. Beim auslesen solltest Du dann aber auf
> NULL testen, um keine böse Überraschung zu erleben, wenn Du mit den
> Werten, die in der Spalte stehen könnten weiterarbeiten möchtest.

Die Frage ist doch warum auf einmal $meinFeld =
$Tabelle->field("meineSpalte") mit keinem Wert also NULL, zu $meinFeld = "0"
wird.
kann ja irgendwie nicht sein. Ist aber so und das kapier ich nun überhaupt
nicht.

> Wie gesagt, überprüfe mal den Standardwert der Spalte und lösche ihn, wenn
> vorhanden.

Defaults wurden gecheckt und stimmen auch

Danke und cu Arno

Re: Proplem mit Variablenübergabe na MySQL

am 27.10.2004 12:05:38 von Ulrich Nehls

Hi Arno,

> nun ist es aber so das "meine Spalte" keinen Wert hat also in MySQL
> der Wert NULL besteht. Beim einfügen des neuen Datensatzes wird aber
> aus NULL = 0, nur das möchte ich nicht. Wie übergebe ich ohne grossen
> Aufwand IS NULL.

Vielleicht suchst du das hier?

"If you try to store NULL into a column that doesn't take NULL values,
MySQL Server stores 0 or '' (the empty string) instead."

http://dev.mysql.com/doc/mysql/en/constraint_invalid_data.ht ml

Gruß,

UN