all to a member function execute() on a non-object

  • Hallo,


    sorry aber ich bin langsam am verzweifeln. Auf einer Seite läuft mein Script auf einer anderen einfach nicht. Ich bekomme diese Meldung:


    all to a member function execute() on a non-object


    Was hat dieses zu bedeuten? Mein Code sieht so aus, an dieser Stelle nur das Update, da das insert ohne Probleme klappt.



    Ich habe es jetzt immer wieder mit dem anderen Script vergleichen und es ist so wie ich das sehe, absolut gleich. Vielleicht sehr ihr ja den Fehler :/

  • Ich hab den Fehler gefunden, bei:


    l_teaser=?


    hat das , gefehlt. Warum kann PHP nicht einfach vernünftige Fehlermeldungen ausgegeben? Ganz ehrlich, ich habe jetzt bestimmt gut 2 Stunden den Fehler gesucht :/

  • Hier wird eine Bedingung gestellt:

    PHP: 26
    if ($nmb_f->file_dst_name != ''){


    Wenn diese Bedingung nicht erfüllt wird, wird auch kein

    PHP: 30
    $stmt = $mysqli->prepare()


    Ausgeführt. Dadurch ist '$stmt' 'undefined' und kein Objekt, was wiederum bedeutet das man keine Methoden(in deinem fall execute() ) des Objekts benutzen kann.
    Pack das '$stmt->execute()' nach Zeile 68 rein (also zwischen 68 und 69) und dann sollten keine Fehler entstehen (allerdings scheint die Bedingung aus Zeile 26 false zu sein, was die Folge hat das du keine Daten bekommen wirst..).

  • Danke dir für deine schnelle Antwort, ich habe den Fehler allerdings schon gefunden, schau mal ein Posting über deinem. Es läuft jetzt auch wieder. Soll ich dennoch das stmt->execute() eine Zeile höher schieben und würde dann das header("Location: http://$host$uri/$extra"); ebenfalls mit nach oben wandern?

  • Warum kann PHP nicht einfach vernünftige Fehlermeldungen ausgegeben?


    Tuts doch =)
    Du musst English lesen können - klar.
    Wenn Du dann nach ner Weile die Zusammenhänge verstehst (hier zB object / methode ...), dann verstehst Du die Meldungen auf Anhieb.

    Zitat

    Call to a member function execute() on a non-object


    Call = Aufrufen
    member function = Methode einer Klasse
    execute() = der Name der aufgerufenen Methode
    on a non object = auf ein nicht object


    =)


    BTW
    guck Dir mal die Klammern an:


    Einrücken!
    Da bricht man sich ja einen ab wenn man das lesen will :)


    Zu Deiner letzten Frage: Ja und Nein.
    execute() muss dort rein, wo es "funktionieren kann". Außerhalb wird es das nie.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!