mysqli_fetch_Array probleme

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

  • mysqli_fetch_Array probleme

    Morgen,

    ich versuche gerade ein kleines Login zu basteln, welches die Userdaten aus einer DB holt.

    Allerdings bekomme ich die Meldung:

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\index2.php on line 17

    Der dazugehörige Code lautet:
    PHP-Code:
    $abfrage "SELECT uname, upasswort FROM user where uname = ".$loginname." and upasswort = ".$passwort."";     
    $ergebnis mysqli_query($verbindung,$abfrage);      
    echo 
    "... $abfrage";      
    if (
    mysqli_fetch_array($ergebnis))          
    {         
    echo 
    "gut";         

    Ausgabe der Abfrage lautet:
    SELECT uname, upasswort FROM user where uname = admin and upasswort = admin

    Weiß jemand woran es liegen kann?

  • #2
    Ja, deine Abfrage ist aufgrund fehlender Delimiter fehlgeschlagen und liefert ein false zurück - das ist natürlich keine gültige MySQL-Ergebnisressource sondern ein Boolean - wie auch in der Fehlermeldung geschrieben steht.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Welchen Part müsste dafür denn anpassen? Mich wundert es nur das es ein in einem alten Projekt genau so funktioniert hat. *G*

      Kommentar


      • #4
        Strings gehören in SQL-Abfragen nun mal in Anführungszeichen, und das war garantiert auch bei deinem alten Projekt der Fall! Auch wenn man mit dem mysqli-Interface arbeitet, sollte man auf das Fehlerhandling achten, dann hättest du beim Query schon einen Fehler erhalten.
        Und wenn denn schon mysqli, dann doch wenigstens mit der OO-Variante, das sieht dann etwa so aus:
        PHP-Code:
        $db mysqli_connect($host$user$passwd$db) or exit(mysqli_connect_error());
         
        $abfrage "
            SELECT 
                uname, 
                upasswort 
            FROM 
                user 
            WHERE 
                uname = '
        $loginname'
            AND 
                upasswort = '
        $passwort'";     
        $ergebnis $db->query($abfrage) or exit($db->error);      
        echo 
        "... $abfrage";      
        if (
        $row $ergebnis->fetch_assoc()) {         
            echo 
        "gut";         

        Gruss
        H2O

        Kommentar


        • #5
          Das kann vielleicht einfach glück gewesen sein.....

          Wenn z.B. ein leerzeichen in loginname oder passwort ist, so schlägt der Query auf jeden Fall fehl..

          Setze sie in Hochkommata.....


          Und um dir noch einen Tip zu geben: Wenn du schon mysqli verwendest, dann verwende lieber die objektorientierte Methode.... und dann kannst du dir auch Errors ausgeben lassen.

          Außerdem kannst du durch ein

          PHP-Code:
          echo $abfrage 
          dir den Query mal ausgeben lassen und ihn z.B. in phpmyadmin ausprobieren..
          signed oder unsigned... das ist hier die Frage

          Kommentar


          • #6
            Habe die Variablen mal in '' gesetzt und es funzt nun

            Vielen Dank.

            Kommentar


            • #7
              Es ist ja so das beim Start von einer Session keine Ausgabe vorher statt gefunden haben darf.

              Allerdings bekomme ich die Fehlermeldung:
              Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by

              PHP-Code:
              <?php session_start();
              Jemand eine Idee?

              Kommentar


              • #8
                Ja, du hast den relevanten Teil der Fehlermeldung bereits weggeschnitten ...
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\index2.php:1) in C:\xampp\htdocs\index2.php on line 1

                  Das wäre der ganze.

                  Kommentar


                  • #10
                    Ok, legen wir mal los:
                    a) ist das ein Thread mit einem ganz anderen Thema, daraus resultiert dann auch noch
                    b) du hast die Frage im völlig falschen Forum gestellt. Wenn du das richtige gewählt hättest, wäre dir sicher etwas aufgefallen, und zwar
                    c) gibt es einen Thread, der genau deine Fehlermeldung als Topic hat und den du lesen musst!
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar

                    Lädt...
                    X