Probleme mit mysqli Abfrage.

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

  • Probleme mit mysqli Abfrage.

    Hi Leute

    Mein Problem ist folgendes. Ich schaff es aus irgendeinem Grund nicht eine vernünftige Mysql Abfrage zu erhalten. (Ich nutze die PHP5 mysqli Klasse).

    Ich hab jetzt eine Datenbank mit einer Userliste (id, loginname, passwort) die ich Abfragen will.
    Allerdings will ich nicht die gesamte Liste haben, sondern nur den Datensatz der meinen gesuchten loginnamen enthält.

    Wenn ich die ganze Liste hiermit Abfrage funktioniert es:
    Code:
            $sql = "SELECT * FROM user";
            $ergebnis = $db->query($sql);
    
            while ($zeile = $ergebnis->fetch_object())
                {
                echo $zeile->login. " ist zust&auml;ndig f&uuml;r " .$zeile->passwort. "<br />";
                }
                $ergebnis->close();
    Will ich nur einen Wert funktioniert es nicht:
    Code:
            $sql = "SELECT * FROM user WHERE loginname = 'Maanee'";
            $ergebnis = $db->query($sql);
    
            while ($zeile = $ergebnis->fetch_object())
                {
                echo $zeile->login. " ist zust&auml;ndig f&uuml;r " .$zeile->passwort. "<br />";
                }
                $ergebnis->close();

    Was mach ich bitteschön falsch ???
    Will im Prinzip nur den Datensatz der wie oben im Statement zu sehen den gesuchten Namen enthält.

    Würd mich noch mehr freuen wenn wir jemand das Statement geben könnt wo für den Namen eine Variable drin steht und es am besten noch funktioniert .

    SChon mal danke für eure Hilfe
    Der die das, wer wie was, wieso weshalb warum
    ..... wer nicht fragt bleibt dumm.

  • #2
    Ok.. hab das momentan behelfsmäßig gelöst mit meiner ersten Abfrage und diesem Codestück.

    Code:
            while ($zeile = $ergebnis->fetch_object()){
                if($zeile->login == "$loginname" && $zeile->passwort == md5($passwort)){
                    echo $zeile->login. " ist zust&auml;ndig f&uuml;r " .$zeile->passwort. "<br />";
                }
            }
    Aber das ist auch nicht wirklich das gelbe vom Ei.
    Is ja schließlich auch mit eine Performance Frage.

    Hab das jetzt nur mal gepostet falls mir jemand so ne Lösung vorschlagen will
    Der die das, wer wie was, wieso weshalb warum
    ..... wer nicht fragt bleibt dumm.

    Kommentar


    • #3
      Zitat von Maanee9 Beitrag anzeigen
      Was mach ich bitteschön falsch ???
      Du stehst nur mit weit aufgerissenen Augen staunend da - anstatt vernünftiges Debugging zu betreiben.


      Kontrollausgabe der Query, Test mittels phpMyAdmin oder vergleichbarer Oberfläche - kommt dabei das gewünschte heraus?

      Und warum du eine Schleife nutzt, wenn du nur einen einzigen Datensatz erwartest, ist wohl auch nicht logisch zu erklären.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hallo,

        mir fällt auf, dass du den Spaltennamen einmal mit "login" und einmal mit "loginname" angibst und ich vermute mal, dass nur eins von beiden richtig sein wird.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          mea culpa
          mea maxima culpa

          Ich hab den Fehler gefunden.... war einfach nur ein kleines Syntax Problem...
          Hab den zu suchenden Text leider immer in schräge Anführungszeichen (`) wie Java üblich gesetzt.

          (Wir programmieren in der Arbeit mit Java und mach mit PHP eigentlich nur selten was.)

          Das schlimme is nur das ichs im Codebeispiel in die normalen Anführungszeichen gesetzt hab.. bzw war das jetzt letztendlich das Gute... Darum is es mir aufgefallen.


          Danke trotzdem das ihr euch das darüber Gedanken gemacht habt.


          @wahsage
          Die Schleife war nur da, weil ich wie gesagt, immer die ganze Liste abfragen musste weil das Statement mit Where nicht funktionierte und ich trotzdem auf die schnelle ne Lösung brauchte.
          Der die das, wer wie was, wieso weshalb warum
          ..... wer nicht fragt bleibt dumm.

          Kommentar


          • #6
            So jetzt hab ich wieder ein kleines Problem dazu.

            Hier noch mal mein momentanes Statement:
            PHP-Code:
                    $sql "SELECT * FROM user WHERE login = 'Testuser'";
                    
            $ergebnis $db->query($sql); 

            Wie kann ich jetzt den Testuser durch eine Variable austauschen ?
            Oder geht das nur mit der Prepared Statement Methode ?
            Der die das, wer wie was, wieso weshalb warum
            ..... wer nicht fragt bleibt dumm.

            Kommentar


            • #7
              Zitat von Maanee9 Beitrag anzeigen
              Wie kann ich jetzt den Testuser durch eine Variable austauschen ?
              Durch ganz normale Stringverkettung ...?

              (Wobei natürlich noch was gegen SQL Injection unternommen werden muss - informieren!)

              Oder geht das nur mit der Prepared Statement Methode ?
              Die hätte den Vorteil, dass sie nicht extra des Schutzes gegen Injections bedarf.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Ok. Es funktioniert so wie ich will.

                Ich machs jetzt aber erstmal ohne prepared Statements da ich mich mit der normalen Methode schon schwer genug tue.

                Injections hab ich mich jetzt auch erkundigt.
                Sollte eigentlich weniger das Problem sein da ich vorher die eingabe eh durch Pregmatch checke und nur Buchstab
                en sowie Zahlen eingeben werden dürfen.

                Ausgegeben wird bei mir im Prinzip auch nix.
                Das Echo war nur da um zu überprüfen ob das rauskommt, was auch rauskommen soll.

                Und Passwörter sind bei mir md5 verschlüsselt.


                Im Prinzip macht mir immer nur das ganze Mysql Zeugs zu schaffen
                Der die das, wer wie was, wieso weshalb warum
                ..... wer nicht fragt bleibt dumm.

                Kommentar

                Lädt...
                X