Fatal error: Call to undefined function

tuFrogs

Mitglied
Mit folgendem Skript, was ich auf jede Seite wo ich eine Verbindung zur DB brauche include, verbinde ich mich mit der Datenbank.

PHP:
<?
	error_reporting(E_ALL);
	
	$db_host = 'localhost';
	$db_user = 'username';
	$db_pass = 'password';
	$db_name = 'db_name';
	
	$serverID = @mysql_connect($db_host, $db_user, $db_pass);
	if(!$serverID) { echo('Keine Verbindung zum Datenbankserver möglich.<br />Fehler: ' .$mysql_error()); }
	
	$datenbank = @mysql_select_db($db_name, $serverID);
	if(!$datenbank) { echo('Keine Verbindung zur Datenbank möglich.<br />Fehler: ' .$mysql_error()); }
?>

Bis gestern ging alles.. Ich konnte Datensätze eintragen, bearbeiten, löschen und auch der Counter hat fein weiter gezählt. Nur dann nachts um ca. 2Uhr keine Verbindung mehr zur Website.. :confused: Denke mal der Betreiber bastelt da gerade was um..
Nun denn, gerade eben wieder die Seiten aufgerufen und? Die Seiten werden nur halb dargestellt, manche bestehen nur aus dem Menü (worin unter anderem das Counterskript eingebunden wurde). Fehlersuche.. Nun da ich ja zumindest die halbe Website ausgegeben bekomme dachte ich gleich an die Datenbank. Auf dem Webserver eingeloggt und phpMyAdmin aufgerufen.. Alles ohne Probleme, bekomme sogar die Datensätze angezeigt.
Anschließend habe ich vor den MySQL-Funktionen die @ weggemacht und siehe da, ich bekomme eine Fehlermeldung:
PHP:
Fatal error: Call to undefined function mysql_select_db() in
.........../inc/dbconnect.php on line 12

So, nun zu meiner eigentlichen Frage: Wie kann ich es umgehen dass das Skript nach einem solchen Fehler abgebrochen wird und die Website wenigstens vollständig (wenn auch ohne Daten aus der DB) angezeigt wird.. Ich habe jetzt schon nach dem Fehler gegooglet und auch eine Seite gefunden wo eine Anleitung zu finden ist was man tun kann um das Problem zu lösen, hoffe mal das unser Provider das macht. Nur falls es wieder einmal zu einem solchen Fehler kommt hätte ich gern das die Websites wenigstens ordentlich angezeigt werden. Es sieht nicht sehr professionell aus wenn man auf eine Website geht und nur einen Banner und das Menü angezeigt bekommt.. :rolleyes:
 
So etwas schaffst du nur wenn du ein Caching baust. und komplette HTML Files abspeicherst die ausgegeben werden wenn die Datenbank nicht erreichbar ist.

du solltest nur mit einer validierung herausfinden ob sich die Daten seit dem letzten zugriff geändert hatten. Und falls ja eine neue html erzeugen.
 
Hui, naja sowas weitreichendes wollte ich nicht einbauen.. ^^

Ich dachte es würde die Möglichkeit geben vorher zu prüfen ob die beiden Funktionen überhaupt verfügbar sind und wenn nicht sie zu ignorieren. Dann bekomme ich halt die Fehlermeldungen angezeigt, aber die Website steht.. :mad:
 
Die Funktionen sind meist verfügbar auch wenn ich eigentlich lieber mysql_query("use tablex"); mache. Mit dem @ Zeichen davor bekommst du die Fehlermeldung weg, und den rest kannst du innerhalb deiner Website eben abfangen.

function_exists() gibt es auch noch zum überprüfen ob Funktionen vorhanden sind. Aber in der Regel sollte sowas nicht nötig sein. Updates der gleichen finden eignetlich sehr selten statt und dein Abieter sollte das eigentlich Fehlerfrei hinbekommen. Generell hilft dich natürlich dich bei deinem Provider zu beschweren. Dann geht es das nächste mal vielleicht besser ,)

Vor solchen geschichten sollte er dich auf jeden Falli informieren. Auch wenn die Wartungsarbeiten Nachts vollzogen wurden.
 
Naja ich erstelle nur die Websites, gehören tun sie wen anders und ob der eine eMail vom Provider erhalten hat werde mich noch erfragen. Naja sie habs wieder hinbekommen, eMails kann ich auch wieder abrufen und die Funktionen stehen wieder.

Ich glaub aber function_exists() werd ich trotzdem mal einbauen..

Ich danke dir!
 
Die Funktionen sind meist verfügbar auch wenn ich eigentlich lieber mysql_query("use tablex"); mache.
Wenn mysql_select_db() nicht da ist duerfte wohl die komplette MySQL-Extension fehlen, wodurch dann wohl auch mysql_query() nicht verfuegbar sein duerfte.

Und @ ist boese. Fehler werden vermieden und nicht unterdrueckt. Es gibt ein paar wenige Ausnahmen wo ich den Einsatz von @ okay finde, aber wie gesagt, wenige.
 
Naja, in meinem Fall ist das mit den @ vor den Funktionen okay.. Wenn ich wissen will was los ist kann ich sie ja rausnehmen.. Ansonsten bekommt der User nur angezeigt das es net geht und gut,. ^^
 
Zurück