Null wert in PHP?
am 19.05.2005 10:04:15 von Bart Bailey
Hallo,
von einer MySql Dantenbank soll in php überprüft werden ob der Wert
Null ist:
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
Nun erzeugt die Anweisung
if ($line["ImgURL"] IS NULL)
einen Fehler.
Bei
if ($line["ImgURL"] = NULL)
ist es trotz Null nicht wahr.
Wie geht es richtig?
Danke,
Jens
Re: Null wert in PHP?
am 19.05.2005 10:16:54 von unknown
Post removed (X-No-Archive: yes)
Re: Null wert in PHP?
am 19.05.2005 10:55:44 von Martin Klaffenboeck
Am Thu, 19 May 2005 10:04:15 +0200 schrieb Jens Müller:
> if ($line["ImgURL"] = NULL)
Du überprüft hier ob $line["ImgURL"] auf NULL gesetzt werden konnte
(Zuweisiung in der Bedingung). Möchtest du wissen ob $line["ImgURL"]
schon vorher NULL ist, brauchst du "==" anstatt "=".
Martin
Re: Null wert in PHP?
am 19.05.2005 17:29:28 von Bart Bailey
Hallo,
>> if ($line["ImgURL"] = NULL)
>
> Du überprüft hier ob $line["ImgURL"] auf NULL gesetzt werden konnte
> (Zuweisiung in der Bedingung). Möchtest du wissen ob $line["ImgURL"]
> schon vorher NULL ist, brauchst du "==" anstatt "=".
Völlig richtig.
Trotzdem tut er so, als wäre es nicht null.
Gibt es da vielleicht eine Konvertierung bei mysql_fetch_array, wenn
bei der Datenbank der Inhalt NULL ist, auf etwas anderes in PHP?
Die Funktion is_null() brachte auch nicht den Erfolg, es ist immer
false.
Jens
Re: Null wert in PHP?
am 19.05.2005 17:41:14 von Thomas Hamacher
Martin Klaffenboeck schrieb:
> Am Thu, 19 May 2005 10:04:15 +0200 schrieb Jens Müller:
>> if ($line["ImgURL"] = NULL)
> Du überprüft hier ob $line["ImgURL"] auf NULL gesetzt werden konnte
> (Zuweisiung in der Bedingung).
Nein, das überprüft er nicht. Da sowieso alle Variablen schreibbar sind,
funktioniert jede Zuweisung, das kann man so nicht überprüfen. Der OP
prüft hier, ob der Wert NULL wahr ist, mehr nicht.
Eine Zuweisung als Ausdruck ($line['ImgUrl'] = NULL) ist wiederum der
linke Teil der Zuweisung, also ($line['ImgUrl'] = NULL) === NULL.
Siehe .
> Möchtest du wissen ob $line["ImgURL"]
> schon vorher NULL ist, brauchst du "==" anstatt "=".
NACK, das kommt drauf an, welche Werte man in $line['ImgUrl'] erwartet,
da sonst das "==" unter Umständen dazu führt, dass die Variable gecastet
wird. === ist also der gesuchte Operator.
Siehe
Re: Null wert in PHP?
am 19.05.2005 17:45:38 von Thomas Hamacher
Jens Müller schrieb:
>>> if ($line["ImgURL"] = NULL)
>> Du überprüft hier ob $line["ImgURL"] auf NULL gesetzt werden konnte
>> (Zuweisiung in der Bedingung). Möchtest du wissen ob $line["ImgURL"]
>> schon vorher NULL ist, brauchst du "==" anstatt "=".
> Trotzdem tut er so, als wäre es nicht null.
Dann hör auf weiter zu raten und schau dir mit var_dump() an, was
wirklich in der Variablen drin ist.
> Gibt es da vielleicht eine Konvertierung bei mysql_fetch_array, wenn
> bei der Datenbank der Inhalt NULL ist, auf etwas anderes in PHP?
Nein, lies das Handbuch:
"Anmerkung: Diese Funktion setzt NULL Felder auf den PHP Wert NULL"
Re: Null wert in PHP?
am 20.05.2005 09:11:37 von Bart Bailey
>> Trotzdem tut er so, als wäre es nicht null.
>
> Dann hör auf weiter zu raten und schau dir mit var_dump() an, was
> wirklich in der Variablen drin ist.
In der Tat der beste Ratschlag :-)
Durch einen Logikfehler wurden überhaupt nur daten ausgegeben, bei
denen der Wert nicht NULL war.
Jetzt funktioniert alles.
Jens