Lily: Frage zu diesem if code

Hi,
ich will mit einem if Code prüfen, ob die beiden Felder $row['backupFrom'] und $row['backupUntil'] leer sind also NULL sind.

Dazu habe ich folgenden Code geschrieben:
if ($row['backupFrom'] && $row['backupUntil'] == NULL) {....}

Leider funktioniert es nicht. Es wird nicht erkannt, wenn die beiden Felder in der Datenbanktabelle leer sind.

Wisst ihr warum?
Danke

  1. Ich kann zwar kein PHP, aber nach Analogie aus anderen Sprachen muss es doch wohl

    if ($row['backupFrom'] == NULL && $row['backupUntil'] == NULL)

    heißen.

  2. Moin!

    ich will mit einem if Code prüfen, ob die beiden Felder $row['backupFrom'] und $row['backupUntil'] leer sind also NULL sind.

    Leer? Oder NULL? Das ist nicht dasselbe!

    Dazu habe ich folgenden Code geschrieben:
    if ($row['backupFrom'] && $row['backupUntil'] == NULL) {....}

    Vergleiche sind wie normale Rechenregeln (Punktrechnung vor Strichrechnung): Sie einfach nur sinnlos hintereinanderklatschen führt zu Murks.

    "1 + 2 * 3" ist nicht das Gleiche wie "(1 + 2) * 3".

    Und genauso ist es bei Vergleichen. Eine Übersetzung deines Satzes "ob die beiden Felder Null sind" ist außerdem noch notwendig. Welcher Fall soll denn nun abgedeckt werden: Beide sind gleichzeitig NULL, oder es reicht schon, wenn nur ein einziges NULL ist.

    Dein bisheriger Code lautet: Verknüpfe die beiden Felder mit einem logischen UND und vergleiche dann mit dem Wert NULL.

    Das führt dazu, dass der Inhalt der Felder zu einem Boolwert evaluiert wird (true oder false), dessen logische Verknüpfung gebildet wird (Ergebnis ist false, wenn mindestens eine der Einzelwerte false ist), und am Ende wird true oder false mit NULL verglichen, wobei NULL ebenfalls evaluiert wird zu false.

    Eventuell klappt dein Versuch also, nur wird zwischendurch soviel Typkonvertierung betrieben, dass es höchst unwahrscheinlich ist, dass am Ende genau das rauskommt, was du erwartet hattest.

    Die übliche Vorgehensweise, um bei Vergleichen nicht in Teufels Küche zu geraten: Alle Vergleiche schön in Klammern setzen, nichts unnötig zusammenfassen. Und Prüfungen  auf den NULL-Wert werden in PHP mit der Funktion is_null() durchgeführt.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
  3. Das die hier immer soviel abtexten mussen...

    Um Dir mal ne Antwort zu geben:

    Dazu habe ich folgenden Code geschrieben:
    if ($row['backupFrom'] && $row['backupUntil'] == NULL) {....}

    if ( ($row['backupFrom']== "")&&($row['backupUntil']== "") )
    {
    //code
    }

    Gruß Leo

    1. Hello out there!

      Das die hier immer soviel abtexten mussen...

      Ja, das ist der Sinn dieses Forums: Fragestellern bei Fehlern zu sagen, WARUM etwas nicht funktioniert.

      Durch plumpes Posten von Quelltext lernt der Fragesteller nichts aus seinen Fehlern, wenn er den einfach nur kopiert und sich freut, dass es funzt.

      Schade, dass du das nicht verstanden hast.

      Um Dir mal ne Antwort zu geben:

      Svens Antwort war ausführlich erklärt. Du hattest keinen Grund, dich hier aufzuspielen.

      See ya up the road,
      Gunnar

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    2. hi,

      Das die hier immer soviel abtexten mussen...

      Um Dir mal ne Antwort zu geben: [...]
      if ( ($row['backupFrom']== "")&&($row['backupUntil']== "") )

      Wenn es wirklich explizit um NULL-Werte geht - dann ist deine Minimalantwort leider ebenso explizit falsch.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }