Error - Verstehe mysql_fetch_assoc nicht

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

  • Error - Verstehe mysql_fetch_assoc nicht

    Code:

    <?php
    $userid = $_SESSION["id"];


    $abfrage = "SELECT * FROM login WHERE id LIKE '$userid'";
    $ergebnis = mysql_query($abfrage);


    if($_SESSION["status"] == 0) {
    echo "Du bist nicht eingeloggt!";
    }


    else{
    WHILE ($row = mysql_fetch_assoc($abfrage)){
    $alter = $row['alter'];
    $spiele = $row['spiele'];
    $geschlecht = $row['geschlecht'];
    $id = $row['id'];

    echo "Alter: $alter <br>
    Spiele: $spiele<br>
    Geschlecht: $geschlecht<br>
    ID: $id ";
    }
    }





    ?>

    Error:

    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in C:\Program Files\XAMPP\htdocs\Website\profil.php on line 23

    Wo ist der Fehler? Ich hatte ihn mal durch zufall gefixt, würde ihn aber gerne verstehen, denn eigentlich sollte die Abfrage kein FALSE ausgeben..

  • #2
    $abfrage ist dein SQL-Statement in String-Form – das Ergebnis deiner ausgeführten Abfrage steht in $ergebnis …

    denn eigentlich sollte die Abfrage kein FALSE ausgeben..
    Nirgendwo war von false die Rede … aufmerksames Lesen der Fehlermeldung hilft.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Kommt diese Errormeldung nicht wenn die zweite Abfrage ein False zu verarbeiten hat? Deshalb dachte ich an False.

      Kommentar


      • #4
        Wenn du mysql_fetch_assoc false als Parameter übergeben hättest, dann würde die Fehlermeldung „boolean given“ sagen, und nicht string.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Was muss ich denn ändern damit es wieder funktioniert? String given heißt doch nichts schlechtes eigentlich O.o

          Kommentar


          • #6
            Nicht $abfrage, sondern $ergebnis ist die Variable, die du an die Funktion übergeben willst – das hatte ich doch gleich zu Anfang schon geschrieben …
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ich hab das nun geändert, bekomme allerdings den gleichen Error nur mit boolean...

              Kommentar


              • #8
                Na dann wird’s wohl Zeit, dass du mal anfängst ein bisschen vernünftiges Debugging zu betreiben.

                Tutorials - PHP / MySQL - Fehlersuche - MySQL-Fehler
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zitat von FrozenBane Beitrag anzeigen

                  Wo ist der Fehler? Ich hatte ihn mal durch zufall gefixt, ...
                  Bugfixing by Accident. Gefällt mir.

                  Hier mal ein Beispiel, wie dein Quellcode aussehen könnte, wenn er halbwegs strukturiert aufgebaut wäre:

                  PHP-Code:
                  // Session-Abfrage
                  $userid $_SESSION['id'];
                  // (hier bin ich mir nicht ganz sicher, was dein Original-Code-Ausschnitt
                  // bewerkstelligen sollte, also eventuell anpassen)
                  if (=== $_SESSION['status']) {
                      echo 
                  'Du bist nicht eingeloggt!';
                      return; 
                  // beendet Script
                  }
                  // bevor wir nicht geklaert haben, ob der User ueberhaupt eingeloggt ist,
                  // muss auch keine Verbindung zur Datenbank geoeffnet werden
                  // ...

                  // siehe auch: http://docs.php.net/manual/en/book.pdo.php
                  // zur Datenbank verbinden
                  // bitte hier deine Konfigurationsdaten einsetzen:
                  $db = new PDO('mysql:host=localhost;port=3306;dbname=database''username''password');

                  // ein "Prepared Statement" erstellen
                  $stmt $db->prepare('SELECT * FROM login WHERE id = ?');
                  if (!
                  is_object($stmt)) {
                      
                  var_dump($db->errorInfo());
                      echo 
                  'Fehler beim Vorbereiten der Datenbankabfrage';
                      return; 
                  // beendet Script
                  }

                  // Variable an den ersten Platzhalter (das erste '?') binden
                  $stmt->bindValue(1$userid);

                  // Statement ausfuehren
                  if (!$stmt->execute()) {
                      
                  var_dump($stmt->errorInfo());
                      echo 
                  'Fehler beim Ausfuehren der Datenbankabfrage';
                      return; 
                  // beendet Script
                  }

                  // wir wollen die Datensaetze als assoziative Arrays
                  $stmt->setFetchMode(PDO::FETCH_ASSOC);

                  // ueber die Liste der Ergebnis-Datensaetze iterieren
                  foreach ($stmt as $row) {
                      
                  printf('Alter: %s<br />'$row['alter']);
                      
                  printf('Spiele: %s<br />'$row['spiele']);
                      
                  printf('Geschlecht: %s<br />'$row['geschlecht']);
                      
                  printf('Id: %s<br />'$row['id']);
                  }
                  // in unserem Fall sollte diese Anzahl 0 oder 1 sein
                  echo '... Fertig!'
                  Darauf kannst du (hoffentlich) aufbauen. Die verwendeten PHP-Funktionen, die du nicht kennst, kannst du unter PHP: PHP Manual - Manual "ergooglen". Die hässlichen Fehlermeldungen sollten in einem Endprodukt auch nicht direkt in der (HTML-)Ausgabe erscheinen. Aber für den Anfang sagen sie dir, wo du was falsch gemacht hast, und meist auch was.
                  Zuletzt geändert von fireweasel; 18.10.2015, 11:38. Grund: typo
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Kommentar

                  Lädt...
                  X