Philip Naggert: If Clause mit NULL

Hallo,

ich möchte eine IF-Abfrage in einem Script (nicht relevant) machen.

In der Datenbank habe ich eine Spalte, in der kein Datensatz drinsteht. Jedoch ist er auch nicht leer, sondern es steht "NULL" drin.

Nun möchte ich, dass etwas bestimmtes angezeigt wird, sofern der Datensatz in dieser Spalte "NULL" als Inhalt hat.

Leider klappten beide Varianten, die ich probierte, nicht:

if ($row[3]=="") { $row[3]=="-"; }
   if ($row[4]=="") { $row[4]=="-"; }

und

if ($row[3]=="NULL") { $row[3]=="-"; }
   if ($row[4]=="NULL") { $row[4]=="-"; }

Was genau mache ich falsch bzw. wie macht man es richtig?

MfG
Philip

  1. Nabend,

    Was genau mache ich falsch bzw. wie macht man es richtig?

    Du nennst nicht, was du mit "es klappt nicht" meinst. Was haben deine Debug-Ausgaben ergeben? Sind Whitespaces im Weg?

    Bis denne,

    1. Du nennst nicht, was du mit "es klappt nicht" meinst. Was haben deine Debug-Ausgaben ergeben? Sind Whitespaces im Weg?

      Danke erst einmal für die Antworten.

      Es war so, dass "-" trotz des Attributes "Null" nicht angezeigt wurde, dieser Fehler ist dank Eurer Hilfe ja nun behoben.

      Danke
      Philip

  2. hi,

    if ($row[3]=="") { $row[3]=="-"; }
       if ($row[3]=="NULL") { $row[3]=="-"; }
    Was genau mache ich falsch bzw. wie macht man es richtig?

    seit wann ist denn == der _zuweisungsoperator_? (im anweisungsblock nach den IFs.)

    gruss,
    wahsaga

  3. Hallo,

    Hai,

    ich möchte eine IF-Abfrage in einem Script (nicht relevant) machen.

    In der Datenbank habe ich eine Spalte, in der kein Datensatz drinsteht. Jedoch ist er auch nicht leer, sondern es steht "NULL" drin.

    Nun möchte ich, dass etwas bestimmtes angezeigt wird, sofern der Datensatz in dieser Spalte "NULL" als Inhalt hat.

    Leider klappten beide Varianten, die ich probierte, nicht:

    if ($row[3]=="") { $row[3]=="-"; }
       if ($row[4]=="") { $row[4]=="-"; }

    und

    if ($row[3]=="NULL") { $row[3]=="-"; }
       if ($row[4]=="NULL") { $row[4]=="-"; }

    Was genau mache ich falsch bzw. wie macht man es richtig?

    nun ja, du scheinst == und = nicht so ganz auseinanderhalten zu können .

    == ist der Vergleichsoperator, d.h. du vergleichst den rechten mit denm linken Wert.
    = ist der Zuweisungsoperator, d.h. du weist dem linken Wert den Wert des rechten zu.

    Wenn ich dein Problemm richtig verstehe, willst du, wenn in der _vergleich_ der row[3] mit NULL wahr ist (also in row[3] "NULL" steht), dass der row[3] "-" _zugewiesen_ wird.

    Daraus folgt folgender Code:
       if($row[3] == "NULL"){
           $row[3] = "-";
       }

    MfG
    Philip

    Byebye eb4

    1. Hallo,

      Daraus folgt folgender Code:
         if($row[3] == "NULL"){
             $row[3] = "-";
         }

      Steht in deinem Datenbankfeld der Wert NULL oder der String "NULL"?. Müsste in ersterem Fall nicht if(is_null($row[3])) korrekt sein?

      gruß,
      Severin

      --
      Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
      --Philip K. Dick
  4. hi,

    In der Datenbank habe ich eine Spalte, in der kein Datensatz drinsteht. Jedoch ist er auch nicht leer, sondern es steht "NULL" drin.

    in einer spalte stehen auch keine datensätze, sondern attribute. eine zeile wird als datensatz bezeichnet. NULL is bei datenbanken ein bezeichner für keinen eintrag, also ist er leer (nicht zu verwechseln mit der zahl 0).

    Nun möchte ich, dass etwas bestimmtes angezeigt wird, sofern der Datensatz in dieser Spalte "NULL" als Inhalt hat.

    also wenn das attribut leer ist. versuch mal

    if (!$row[3]) { $row[3]=="-"; }
    if (!$row[4]) { $row[4]=="-"; }

    Ilja

    1. rofl, jetzt habe ich beim kopieren den gleichen fehler gemacht. ok bei den zuweisungen ist ein "=" zuviel. ;-)

      Ilja

    2. Hallo,

      if (!$row[3]) { $row[3]=="-"; }
      if (!$row[4]) { $row[4]=="-"; }

      Dieser Code kann meiner Meinung nach nicht funktionieren (ich bitte mich zu korrigieren, wenn ich mich irre). Der Grund ist, dass du auf einen boolschen Wert prüfst, NULL aber gar kein Wert ist, also weder true noch false noch sonst was.
      Meiner Meinung nach müsste if(is_null($row[3])) korrekt sein.

      gruß,
      Severin

      --
      Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
      --Philip K. Dick
      1. Hallo Severin,

        [if (!$var)]
        Dieser Code kann meiner Meinung nach nicht funktionieren (ich bitte mich zu korrigieren, wenn ich mich irre). Der Grund ist, dass du auf einen boolschen Wert prüfst, NULL aber gar kein Wert ist, also weder true noch false noch sonst was.

        Doch, der Code funktioniert für diesen Fall, jedoch wird die Bedingung auch erfüllt, wenn dort z.B. 0 drin steht oder ein leerer String enthalten ist.

        Vgl:

        var_dump ((bool) "hallo");       // bool(true)
        var_dump ((bool)(int) "hallo");  // bool(false)
        var_dump ((bool) "");            // bool(false)
        var_dump ((bool) 0);             // bool(false)
        var_dump ((bool) null);          // bool(false)

        Meiner Meinung nach müsste if(is_null($row[3])) korrekt sein.

        Ja. Sowie auch if ($row[3] === null). (Identitätsoperator)

        Aber: if ($row[3] == null) wäre u.U. auch falsch:

        var_dump (1 == null);             // bool(false)
        var_dump ('hallo' == null);       // bool(false)
        var_dump ((int)'hallo' == null);  // bool(true)
        var_dump ('' == null);            // bool(true)
        var_dump (0 == null);             // bool(true)
        var_dump (null == null);          // bool(true)

        Viele Grüße,
        Christian