Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit mysql-DB und tinyint in PHP

Einklappen

Neue Werbung 2019

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

  • Probleme mit mysql-DB und tinyint in PHP

    Hallo Zusammen,

    das ist hier mein erster Foreneintrag, darum verzeiht bitte, sollte ich die Etikette verletzen.

    Ich hab eine kleines php-Skript gebastellt, das Werte aus einer MySQL-DB ausliest. Eine Spalte ist vom Typ tinyint und enthält 0- oder 1-Werte. Ich möchte jetzt in PHP auswerten, ob der Wert 1 oder 0 ist. Aber irgendwie klappt es nicht.

    Ich lasse mir als Überprüfung den Wert der Variable pump in eine Datei schreiben:
    PHP-Code:
    while($row mysql_fetch_assoc($query))
        {
        
    $pump=$row["pump"];
        
    fwrite($fp,"\npump=".$pump);
        
    fwrite($fp,"\n(pump==1)=".($pump==1));
        
    fwrite($fp,"\n(pump==0)=".($pump==0)); 
    Als Ergebnis:
    pump=0
    (pump==1)=
    (pump==0)=1

    pump=1
    (pump==1)=1
    (pump==0)=

    Gleiches bei pump===1.

    Warum wird nie (pump==1)=0 oder (pump==0)=0 ausgegeben?

    Was mache ich falsch? Bzw. braucht Ihr noch weitere Infos?

    Vielen Dank im Voraus für Eure Hilfe.

  • #2
    Das hier mal laufen lassen:
    PHP-Code:
    while($row mysql_fetch_assoc($query)) {
        
    var_dump$row["pump"] );

    Und bitte Ausgabe posten.

    Das nennt sich übrigend Debugging (Fehlersuche), und kannst du auch ganz einfach mal alleine machen. Dh zuerst mal schauen was ist denn "das" genau und dann an Hand der genutzen Funktionen/Code weiter sehen. Step by Step.
    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
      Du solltest dir anschauen, was wirklich in $pump drin steht:
      PHP-Code:
      fwrite($fpvar_export([
          
      '$pump' => $pump,
          
      'bin2hex($pump)' => bin2hex($pump),
          
      '$pump == 1' => $pump == 1,
          
      '$pump == 0' => $pump == 0
      ], true)); 
      Die mysql_* Funktionen sind übrigens veraltet und sollten nicht mehr verwendet werden.

      Kommentar


      • #4
        Schau dir mal die Vergleichsoperatoren an.
        Der Ausdruck in der Klammer wird zu true oder false ausgewertet.
        Um es zu verdeutlichen mal ein kleiner Test:
        PHP-Code:
        <?php
        $pump 
        0;
            print(
        "<br>\npump=".$pump);
            print(
        "<br>\n(pump==1)=".($pump==1));
            print(
        "<br>\n(pump==0)=".($pump==0));  
        $pump 1;
            print(
        "<br>\npump=".$pump);
            print(
        "<br>\n(pump==1)=".($pump==1));
            print(
        "<br>\n(pump==0)=".($pump==0));
        $pump 0;
            print(
        "<br><br>\npump=".$pump);
            print(
        "<br>\n(pump==1)=".(($pump==1)?"true":"false"));
            print(
        "<br>\n(pump==0)=".(($pump==0)?"true":"false"));  
        $pump 1;
            print(
        "<br>\npump=".$pump);
            print(
        "<br>\n(pump==1)=".(($pump==1)?"1":"0"));
            print(
        "<br>\n(pump==0)=".(($pump==0)?"1":"0"));  
        ?>

        Kommentar

        Lädt...
        X