Umstellung von PHP 7.x auf PHP 8.x - Uncaught Error: Call to a member function next()

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Umstellung von PHP 7.x auf PHP 8.x - Uncaught Error: Call to a member function next()

    Hallo,
    mein Provider schaltet demnächst PHP 7.x ab und stellt entsprechend nur noch PHP 8.x zur Verfügung. Leider funktionieren mit PHP 8 nicht alle Skripte. Einiges konnte ich inzwischen selbst korrigieren wie das Ersetzen von { } durch [ ]. Mit dem folgenden Fehler komme ich aber nicht weiter bzw. finde nicht den richtigen Lösungsansatz.

    Fatal error: Uncaught Error: Call to a member function next() on bool in /data/web/htdocs/events0.php:63 Stack trace: #0 /data/web/htdocs/index.php(132): include() .#1 {main} thrown in /data/web/htdocs/events0.php on line 63

    Die betreffende Zeile sieht aktuell so aus:
    PHP Code:
       while ($result -> next() ?? '') { 

    Das "?? ''" habe ich bereits als Lösungsversuch erfolglos ergänzt.

    $results wird vorher so aus einer Textdatei eingelesen:
    PHP Code:
        $db = new Database();
        
    $db->Database("termine" ?? NULL);
        
    $result $db->executeQuery("SELECT * FROM $jahr ORDER BY datcode, datum") ?? '';
    ​ 

    Auch hier habe ich an zwei stellen "?? ''" bzw. "?? NULL" eingefügt, was keine Änderung brachte. Unter PHP 7.4 funktioniert das Skript einwandfrei. Unter PHP 8 wird es aber mit obiger Fehlermeldung abgebrochen.

    Was führt hier zu diesem fatalen Error und wie kann ich das Problem lösen?

    TIA Maik

  • #2
    Hauptsächlich indem du den fragst, der es geschrieben hat.
    Mit den Codeschnipseln lässt sich das auf jeden Fall nicht beantworten.

    $db->executeQuery() gibt wohl false oder true zurück. Da das keine offizielle PHP-Funktion sondern da irgend ein komischer Wrapper verwendet wird ist das nicht beantwortbar.

    Comment


    • #3
      Originally posted by jonas3344 View Post
      Hauptsächlich indem du den fragst, der es geschrieben hat.
      Ich habe jetzt mal beim ursprünglichen Entwickler nachgefragt, befürchte aber, dass ich von ihm keinen Support mehr erhalte.

      Originally posted by jonas3344 View Post
      Mit den Codeschnipseln lässt sich das auf jeden Fall nicht beantworten.

      $db->executeQuery() gibt wohl false oder true zurück. Da das keine offizielle PHP-Funktion sondern da irgend ein komischer Wrapper verwendet wird ist das nicht beantwortbar.
      Ich füge jetzt mal das Skript mit den entsprechenden Funktionen bei, in der Hoffnung, dass jemand was damit anfangen und bei der Problemlösung helfen kann.
      Attached Files

      Comment


      • #4
        Copyright 2005 by c-worker.ch
        Merkst du was? Das Ding gehört ins Museum.

        Comment


        • #5
          Originally posted by jonas3344 View Post
          Merkst du was? Das Ding gehört ins Museum.
          So ist es. Selbst wenn man diesen Fehler findet und korrigiert, die Wahrscheinlichkeit, dass dann der nächste Fehler hochkommt, ist riesig groß.

          Comment


          • #6
            Originally posted by prinzip View Post
            Ich habe jetzt mal beim ursprünglichen Entwickler nachgefragt, befürchte aber, dass ich von ihm keinen Support mehr erhalte.
            Völlig überraschend hat er geantwortet und mir alle relevanten Dateien mit PHP 8 Überarbeitung geschickt, die er selbst für die PHP 8 Umstellung anpassen musste.

            In den überarbeiteten Dateien steht weiterhin "Copyright 2005 by c-worker.ch", was auf die Funktionsweise glücklicherweise keinen Einfluss hat.


            Comment

            Working...
            X