Ankündigung

Einklappen
Keine Ankündigung bisher.

NULL wird zu 0

Einklappen

Neue Werbung 2019

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

  • NULL wird zu 0

    Liebe Community,

    ich bin gerade dabei meine Fähigkeiten zu erweitern und versuche mich an einem etwas kleineren Spiel.

    Ich habe eine Angebotsklasse und eine Spielerklasse, anhand von Daten aus der Spielerklasse soll die Angebotsklasse befüllt werden.

    OfferPlayer.class.php
    PHP-Code:
    class OfferPlayer {
            private 
    $from;
            private 
    $to;
            private 
    $player;

            function 
    set($property$value) {
                
    $this->$property $value;
                
                return 
    true;
            }
            
            function 
    get($property) {
                return 
    $this->$property;
            }
            
            function 
    send(mysqli $connect) {
                if(
    $sqlOffer    =    $connect->query("INSERT INTO `offers_players`
                    (`from`, `player', `to`)
                    VALUES ('
    $this->from', '$this->player', '$this->to')")) {
                        return 
    true;
                    }
                
                return 
    false;
            }
      }
    ?> 
    Player.class.php
    PHP-Code:
    <?php
        
    class Player {
            private 
    $playerID;
            private 
    $playername;
            private 
    $team;
            private 
    $isActive;
            
            function 
    get($property) {
                return 
    $this->$property;
            }
            
            function 
    set($property$value) {
                
    $this->$property    =    $value;
            }
        }
    ?>
    Habe aus Rücksicht beide Klassen gekürzt. Nun zum eigentlichen Problem, wenn ich aus der Spielerklasse mittels get() einen Wert hole und diesen mit var_dump($player->get("team") bereits geprüft, Rückgabewert war NULL, hab's nach dem Auslesen aus dem Objekt, nach der Übergabe an das Angebotsobjekt und kurz vor dem INSERT in die Datenbank geprüft, jedes Mal NULL. In der Datenbank taucht jedoch 0 auf.

    Hatte dieses Problem schon mal jemand und kann mich auf einen, wohl ziemlich kleinlichen, Fehler hinweisen? :/

    Liebe Grüße
    Rier

  • #2
    - Ist in dem DB-Feld NULL erlaubt?

    - Wie sieht die geparste(!) Query aus, dort alles korrekt?
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Zitat von hausl Beitrag anzeigen
      - Ist in dem DB-Feld NULL erlaubt?
      Ja, ist sogar als Standardwert eingetragen,

      Zitat von hausl Beitrag anzeigen
      - Wie sieht die geparste(!) Query aus, dort alles korrekt?
      Pardon, was meinst du?

      Kommentar


      • #4
        Das ist ganz normal:

        php > $foobar = null;
        php > var_dump("$foobar");
        string(0) ""
        Btw., es gibt nichts hässlicheres als solche String-Konstrukte wie du sie machst. Verwende lieber gleich Prepared Statements oder setze den String wenigstens schön zusammen:

        PHP-Code:
        $string 'a string ' $this->anItem ' another string'
        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

        Kommentar


        • #5
          Zitat von Rier Beitrag anzeigen
          Pardon, was meinst du?
          Die fertige, von PHP geparste query, die du an die DB schickst ausgeben lassen. Dh das Ding in eine Variable geben und mit echo ausgeben lassen. Dann siehst du was du "wirklich" an die DB schickst.

          http://php-de.github.io/jumpto/sql/#...query-ausgeben

          LG
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            Ich meine die fertige, von PHP geparste query, die du an die DB schickst.

            http://php-de.github.io/jumpto/sql/#...query-ausgeben

            LG
            Er kann gar nie NULL eingeben solange er den Wert als String maskiert.

            [...] '$this->from' [...]
            [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

            Kommentar


            • #7
              Er kann gar nie NULL eingeben solange er den Wert als String maskiert.
              Genau, und beim Ausgeben der Query hätte er dann sehen können das was nicht passt, das meinte ich damit.

              Rier, das 'NULL' muss zu NULL in der Query werden: http://www.peterkropff.de/site/mysql/null.htm

              LG
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar

              Lädt...
              X