Frage Gleicher Code verursacht local probleme - online nicht

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Industriemeister

Mitglied
24 Februar 2011
469
1
18
www.heisse-fantasien.de
Hallo zusammen,

ich habe einige Jahre nicht mehr an meiner Website gebastelt.
Nun wollte ich meine Website local aufrufen.
Und bekommen Fehlermeldungen.

Fatal error: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\heisse-fantasien\sidenavi-fantasien.php:35 Stack trace: #0 C:\xampp\htdocs\heisse-fantasien\index.php(477): include() #1 {main} thrown in C:\xampp\htdocs\heisse-fantasien\sidenavi-fantasien.php on line 35
die entsprechende Codezeile in diesem Fall wäre.
Code:
$ergebnis = mysql_query("SELECT * FROM story WHERE (Storyname REGEXP '^[a-c]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");
Überraschend für mich ist. Online läuft der Code ohne Fehler. Offline auf xampp / mysql nicht. Ich vermute das beim neuinstallieren vom Apache und MySql irgendwelche einstellungen verloren gegangen sind. Ich hätte sonst keine Idee warum der Code online und offline Unterschiede haben sollte.

Ich hoffe ihr könnt mir das erklären. Denn der Zugriff auf die unterschiedlichen Datenbanken ergibt keinen Fehler. Die Online-Einstellung ist auskommentiert. Und die Offline-Einstellung aktiv.
 

basti1012

Aktives Mitglied
26 November 2017
764
71
28
38
Minden
sebastian1012.bplaced.net
wissen tue ich das auch nicht genau. Kann dir sagen das mysql veraltet ist und unter php 7 nicht mehr funktioniert. weiß ja nicht was du da local benutzt ,aber wenn auf den Sever noch php kleiner als 7 oder so läuft könnte das nee erklärung sein
 

m.scatello

Aktives Mitglied
15 Februar 2017
855
90
28
Da ist nichts verloren gegangen, sondern deine Seite ist veraltet und die PHP-Version bei deinem Hoster auch.

Ab PHP 7 gibt es die MySQL-Erweiterung nicht mehr, sondern die MySQLi-Erweiterung.
 

Industriemeister

Mitglied
24 Februar 2011
469
1
18
www.heisse-fantasien.de
Das verwirrt mich.
Wenn ich auf meinem heimischen Rechner den alten Kram nutze. Und Online das neue verwendet wird.
Dann müsste der Fehler doch gerade Online auftreten. Oder irre ich mich?

Aber gut. Was muss ich machen?
Ich habe nach gesehen und folgendes nutze ich in xampp: control Panel v3.2.2 / Apache 2.4.27 n/ php 7.1.9 / php 5.6.31 / phpMyAdmin 4.7.4
das finde ich in der Verzeichnisstruktur die ich mit der letzten Installation von Xampp installiert habe.
Windows 7

Haben sich die Befehle geändert die den Fehler verursachen? Wenn ja wie?
Hat sich die Konfiguration verändert? Was muss ich einstellen?

vielen Dank für Eure Hilfe.
 

basti1012

Aktives Mitglied
26 November 2017
764
71
28
38
Minden
sebastian1012.bplaced.net
mit xampp kenne ich mich nicht aus aber
Bei xampp eine älere php Version ( Installieren,aktivieren ).
Oder besser wäre deinen Code auf mysqli um zu schreiben. Was meistens nicht viel arbeit ist. Jenachdem wie ausführlich dein Code ist.
ier sind paar Punkte erklärt was man ändern muß
https://werner-zenk.de/tipps/umstellung_von_der_php-funktion_mysql_zu_mysqli.php
 

Industriemeister

Mitglied
24 Februar 2011
469
1
18
www.heisse-fantasien.de
Hallo zusammen,

nun komme ich endlich dazu weiter zumachen.
Deshalb erst einmal danke an basti.

ich taste mich an die Änderungen stück für Stück heran.
Dabei fällt mir auf das zum Beispiel mit diesem Code der Inhalt nicht geladen wird. Wenn diese gesendet wird.
PHP:
   elseif($_GET['Bereich'] == "projekt")

   {
   // Zusammensetzen des Pfades Projekt
   $path = "Bereich-".$_GET['Bereich']."/";
   $filename = $_GET['Inhalt'].".php";
   if(file_exists($path.$filename)) include $path.$filename;
   else include ("/error404.php");
   echo $path.$filename;
   }
Ich habe bisher keinen Hinweis gefunden das sich der Befehl $_GET von PHP5 zu PHP7 verändert hat.
Das angesprochen Verzeichnis das mit include erwartet wird existiert: Bereich-projekt/ueber-projekt.php
 

m.scatello

Aktives Mitglied
15 Februar 2017
855
90
28
Ich habe bisher keinen Hinweis gefunden das sich der Befehl $_GET von PHP5 zu PHP7 verändert hat.
  1. $_GET ist kein Befehl, sondern eine Variable
  2. Da gibt es zu PHP 7 auch keine Änderung
Richtig debuggen

  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Werbung: