fetch_array(MYSQLI_ASSOC) Methode auf MySqli Objekt anwenden

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

  • fetch_array(MYSQLI_ASSOC) Methode auf MySqli Objekt anwenden

    Hallo Zusammen,
    ich bekomme mit unten stehendem Code die Fehlermeldung „…Fatal error: Call to a member function fetch_array() on a non-object in C:\xampp\htdocs\index.php on line 52“.

    Offensichtlich gibt die Abfrage $mysqli->query($sql) kein gültiges Objekt zurück. Var_dump(=$result) zeigt die DB-Inhalte jedoch korrekt an, die Abfrage liefert mir auch in phpMyAdmin das richtige Ergebnis, der Query ist demnach ok.
    Was mache ich falsch?


    PHP-Code:
    $mysqli = new System\Database\MySQL("HOST""PASSW""""DB");
     
     
    if(!
    $mysqli)
    {
    die(
    'Es war keine Verbindung zur Datenbank möglich.');
    }
     
    $sql "SELECT NAME, CREATED_ON FROM pages";
     
    if(
    $result $mysqli->query($sql))

    while(
    $row=$result->fetch_array(MYSQLI_ASSOC)) <-FEHLERMELDUNG LINE52 
    //Alternativ: foreach ($result as $row)
    {
    //Verarbeitung, Ausgabe, etc.
    echo implode(' | ',$row).'<br />'
    }
    }
    else

    echo 
    'Fehler ('.$mysqli->sqlstate.'): '.$mysqli->error;
    }
     
    //Abbruch der Verbindung
    $mysqli->close(); 
    Zuletzt geändert von beg-bie; 02.09.2013, 17:20.

  • #2
    Du hast dir viel Mühe beim formatieren gemacht......
    Aber verwende doch besser die PHP BBCode Tags.
    Dann ist es einheitlicher und man kann die Einrückungen sehen.
    Wir werden alle sterben

    Kommentar


    • #3
      EDIT: verlesen...
      Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
      der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

      "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

      Kommentar


      • #4
        Hallo combie,

        irgendwie konnte ich nicht finden wie man einrückt...
        Wie kann ich denn Einrücken, mit "indent" klappt es innerhalb der php tags nicht..?

        Kommentar


        • #5
          Einrücken tust du mit der Leertaste oder der Tabulatortaste. Aber entscheide dich für eine Variante und vermische sie nicht.

          Bei dir fehlt die Fehlerbehandlung. Du gehst einfach davon aus, dass die Datenbankabfrage erfolgreich sein wird.

          Warum verwendest du nicht fetch_assoc() statt fetch_array(MYSQLI_ASSOC)?

          Kommentar


          • #6
            Ich habe eine Fehlerbehandlung drin gehabt, die Abfrage funktioniert einwandfrei. Wie gesagt var_dump() liefert ja auch ein passendes Ergebnis.
            Mit fetch_assoc() hatte ich es auch schon probiert, das liefert die gleiche Fehlermeldung.

            Kommentar


            • #7
              Zitat von beg-bie Beitrag anzeigen
              Ich habe eine Fehlerbehandlung drin gehabt
              Warum hast du sie wieder raus gegeben?

              Kommentar


              • #8
                Weil es übersichtlicher sein sollte. Wie gesagt ich habe keine Fehlermelung bekommen.

                Kommentar


                • #9
                  Zitat von beg-bie Beitrag anzeigen
                  Weil es übersichtlicher sein sollte. Wie gesagt ich habe keine Fehlermelung bekommen.
                  Das glaube ich eben nicht.

                  Kommentar


                  • #10
                    Ich habe gerade noch einmal "...$mysqli->error" und "$mysqli->errno" etc. eingebaut, dies lieferte keinen Fehler...
                    Habe ich etwas vergessen, was könnte ich denn noch machen?

                    Kommentar


                    • #11
                      Lass dir doch mal den Wert, den $result enthält, ausgeben.

                      PHP-Code:
                      var_dump($result); 

                      Kommentar


                      • #12
                        Sorry für die späte Antwort....

                        Wie schon gesagt ich sehe den Inhalt der DB:
                        array(1) { [0]=> array(2) { ["NAME"]=> string(11) "erste Seite" ["CREATED_ON"]=> string(10) "0000-00-00" } }

                        Kommentar


                        • #13
                          Das kann bei var_dump($result) gar nicht sein – weil das keinen Datensatz enthält, sondern lediglich eine Resource-ID. Oder der Code, den du uns hier gezeigt hast, ist nicht der tatsächliche …
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Nachfolgender Code, gibt definitiv diese Zeilen aus:

                            array(1) { [0]=> array(2) { ["NAME"]=> string(11) "erste Seite" ["CREATED_ON"]=> string(10) "0000-00-00" } }
                            Fatal error: Call to a member function fetch_array() on a non-object in C:\xampp\htdocs\oop_project\cms_1.0\index.php on line 39


                            PHP-Code:
                            <?php

                            $mysqli 
                            = new System\Database\MySQL("localhost""root""""cms");


                            if(!
                            $mysqli)
                            {
                                die(
                            'Es war keine Verbindung zur Datenbank möglich.');
                            }

                            $sql "SELECT NAME, CREATED_ON FROM pages";

                            if(
                            $result $mysqli->query($sql))
                            {
                                
                            var_dump($result);
                                while(
                            $row=$result->fetch_array(MYSQLI_ASSOC))
                                
                            //Alternativ: foreach ($result as $row)
                                
                            {
                                    
                            //Verarbeitung, Ausgabe, etc.
                                    
                            echo implode(' | ',$row).'<br />';
                                }
                            }
                            else
                            {
                                echo 
                            'Fehler ('.$mysqli->sqlstate.'): '.$mysqli->error;
                            }


                            //Abbruch der Verbindung
                            $mysqli->close()



                            // var_dump($result);
                            ?>

                            Kommentar


                            • #15
                              Ehmm, warum nennst du die Variable $mysqli, wenn es sich gar nicht um ein mysqli-Objekt handelt, sondern um ein SystemDatabaseMySQL-Objekt, was auch immer das sein soll. Vermutlich mach diese Klasse irgendwas schräges.

                              Kommentar

                              Lädt...
                              X