Ankündigung

Einklappen
Keine Ankündigung bisher.

Kursives "NULL" in DB schreiben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kursives "NULL" in DB schreiben

    Hi, ich habe folgenden Code

    PHP-Code:
    ($_POST['Status'] == 'DEFEKT' || $_POST['Status'] == 'FREI')
                        {
                            
    $userid "NULL";
                            
    $reservierdatum NULL;
                            
    $reservierungsende NULL;
                            
    $verleihdatum "NULL";
                            
    $verleihende 'NULL';
                        } 
    Wenn also ein User den Status "DEFEKT" bzw. "FREI" wählt, soll in die DB NULL geschrieben werden, und hier meine ich das kursive NULL in phpmyadmin. Bei der userID wird dies auch getan, wahrscheinlich weil es als Datentyp INT hat.
    Bei den anderen Daten (alle varchar) wird das Feld in der DB entweder frei gelassen oder "NULL" als String reingeschrieben, ich möchte aber explizit dieses kursive NULL hineinschreiben, da, wenn ich später mit isset() abfrage, es nur funktioniert, wenn das NULL kursiv drinnen steht...
    Wie man sieht habe ich es mit 'NULL', "NULL" und NULL versucht..
    Kann man das überhaupt irgendwie lösen oder muss ich meine Datumsfelder als TimeStamp definieren?

  • #2
    Haben die Felder in der Tabellendefinition vielleicht alle "NOT NULL" stehen?

    Kommentar


    • #3
      Leider nein^^

      Teile der Abfrage:


      Code:
       verleihdatum = 'NULL', verleihende = 'NULL', geraet.userID = NULL
      Die Hochkommata bei verleihdatum und verleihende müssen irgendwie weg..

      Kommentar


      • #4
        Die Hochkommata bei verleihdatum und verleihende müssen irgendwie weg..
        Genau so ist es, es muss in der SQLQuery (!) NULL stehen. Weiters muss das DB-Feld natürlich auch NULL erlauben.

        http://www.peterkropff.de/site/mysql/null.htm

        Zeig mal die gesamte Query und wie du die an die DB schickst.

        Kommentar


        • #5
          Habe das Problem jetzt einfach gelöst indem ich mein isset() mit !empty($variable) ersetzt habe.

          Trotzdem würde mich interessieren, wie man so etwas machen würde.

          Meine Abfrage:

          PHP-Code:
          $sql "UPDATE (geraet LEFT JOIN  members ON geraet.userID = members.id "
                           
          "LEFT JOIN kiste ON geraet.kistenID = kiste.kistenID "
                           
          "LEFT JOIN regal ON geraet.regalID = regal.regalID "
                           
          "LEFT JOIN kategorie ON geraet.kategorieID=kategorie.kategorieID "
                           
          "LEFT JOIN raum ON geraet.raumID = raum.raumID) SET ";
                      
          $sql .= " geraeteName              = '$bezeichnung', ";
                      
          $sql .= " geraet.kategorieID       = '$kategorie', ";
                      
          $sql .= " geraet.raumID            = '$raum', ";
                      
          $sql .= " geraet.regalID           = '$regal', ";
                      
          $sql .= " geraet.kistenID          = '$kiste', ";
                      
          $sql .= " geraet.datenblatt        = '$datenblatt', ";
                      
          $sql .= " geraet.bestelllink       = '$bestelllink', ";
                      
          $sql .= " geraet.barcode           = '$barcode', ";
                      
          $sql .= " statu                    = '$status', ";
                      
          $sql .= " reservierdatum           = '$reservierdatum', ";
                      
          $sql .= " reservierungsende        = '$reservierungsende', ";
                      
          $sql .= " verleihdatum             = '$verleihdatum', ";
                      
          $sql .= " verleihende              = '$verleihende', ";
                      
          $sql .= " geraet.userID            = $userid";
                      
          $sql .= " WHERE geraeteID ='$id'";
            
                      require_once (
          'config.php');
                      
          $db_link mysqli_connect (MYSQL_HOST
                                     
          MYSQL_BENUTZER
                                     
          MYSQL_KENNWORT
                                     
          MYSQL_DATENBANK);
                      
          mysqli_set_charset($db_link'utf8');
                      
          $db_erg mysqli_query$db_link$sql );
                      echo 
          $sql;
                          if ( ! 
          $db_erg )
                              {
                                  die(
          'Ungültige Abfrage: ' mysqli_error($db_link));
                              }
                              else
                                  {
                                      echo 
          "<h2>Eintrag geupdatet</h2>"

          Kommentar


          • #6
            Zitat von diamante123
            Trotzdem würde mich interessieren, wie man so etwas machen würde.
            Hast du dir den Link oben von mir angesehen?

            PHP-Code:
            $sql .= " SET ..., reservierdatum = NULL,  ... " 

            Zitat von hausl
            Weiters muss das DB-Feld natürlich auch NULL erlauben.

            Kommentar


            • #7
              Sry habe den echt übersehen, hätte aber nichts gebracht da es auch andere Werte als NULL annehmen kann... Meine gesamte Bedingung ist nämlich:

              PHP-Code:
              if ($_POST['Status'] == 'DEFEKT' || $_POST['Status'] == 'FREI')
                                  {
                                      
              $userid "NULL";
                                      
              $reservierdatum NULL;
                                      
              $reservierungsende NULL;
                                      
              $verleihdatum NULL;
                                      
              $verleihende NULL;
                                  }
                                  else
                                      {
                                          if (
              $_POST['Status'] == 'RESERVIERT' && !empty($zeile5['userID']))
                                              {
                                                  
              $userid$zeile5['userID'];
                                                  
              $verleihdatum NULL;
                                                  
              $verleihende NULL;
                                     if (isset(
              $zeile5['reservierdatum']) && !empty($zeile5['reservierungsende']))
                                                  {
                                                      
              $reservierdatum $zeile5['reservierdatum'];
                                                      
              $reservierungsende $zeile5['reservierungsende'];
                                                  }
                                                  else
                                                  {
                                                      
              $reservierdatum date("d.m.Y - H:i");
                                                   
              $reservierungsende date("d.m.Y - H:i"strtotime("+7 days"));
                                                  }
                                              }
                                           else if (
              $_POST['Status'] == 'VERLIEHEN' && !empty($zeile5['userID'])) 
                                                  {
                                                      
              $userid$zeile5['userID'];
                                                      
              $reservierdatum NULL;
                                                      
              $reservierungsende NULL;
                                            if (isset(
              $zeile5['verleihdatum']) && !empty($zeile5['verleihende']))
                                                          {
                                                          
              $verleihdatum $zeile5['verleihdatum'];
                                                          
              $verleihende $zeile5['verleihende'];
                                                          }
                                                      else{
                                                      
              $verleihdatum date("d.m.Y - H:i");
                                                      
              $verleihende date("d.m.Y - H:i"strtotime("+20 days"));
                                                          }
                                                      
                                                  }
                                                  else
                                                  {
                                                      
              $userid "NULL";
                                                      
              $reservierdatum NULL;
                                                      
              $reservierungsende NULL;
                                                      
              $verleihdatum NULL;
                                                      
              $verleihende NULL;
                                                  }
                                      } 

              Kommentar


              • #8
                Aha... Das ändert aber nichts daran das ein PHP NULL so nicht in der SQL-Query verwendet werden kann. Für die Query musst du noch aus dem PHP-NULL ein "NULL" für die Query machen, weil:

                PHP-Code:
                $x NULL;
                echo 
                "Inhalt ist: " $x;
                // Ausgabe: Inhalt ist:

                $x "NULL";
                echo 
                "Inhalt ist: " $x;
                // Ausgabe: Inhalt ist: NULL 


                Kommentar


                • #9
                  Für SQL ist "NULL" in Hochkomma ein String, aber NULL ohne Hochkomma NULL

                  Code:
                  UPDATE ... SET x = 'NULL'
                  
                  UPDATE ... SET x = NULL
                  Um den Text NULL ins Query zu bekommen, muss man in PHP schon den String "NULL" verwenden, aber man darf im Query keine Hochkommata drumherum setzen.
                  PHP-Code:
                  $sql "UPDATE ... SET x = NULL"// So isses richtig (NULL Wert)

                  $sql "UPDATE ... SET x = 'NULL'"// So isses falsch (String) 

                  Kommentar

                  Lädt...
                  X