Gibt es eine Möglichkeit, MySQL- und Datenbankfehler in PHP zu erkennen?

8

Manchmal erhalte ich einen Datenbankfehler wie

  

Warnung: mysql_connect () [function.mysql-connect]: Zugriff verweigert für Benutzer 'test'@'101.190.193.83' (mit Passwort: YES)

     

Konnte nicht verbinden: Zugriff verweigert für Benutzer 'test'@'101.190.193.83' (mit Passwort: JA) "

Aber wirklich, es gibt keine Änderung im Passwort.

Gibt es eine Möglichkeit, diesen Fehler in einer Protokolldatei zu erfassen und eine nette Nachricht auf dem Bildschirm anzuzeigen, wie "Serverfehler. Bitte versuchen Sie es später erneut."

    
ASD 25.05.2011, 06:49
quelle

5 Antworten

10

Wenn Sie nicht möchten, dass PHP die Warnung anzeigt, müssen Sie den Operator "@" verwenden

%Vor%

Sie können auch display_errors auf 0 in Ihrem% setzen. co_de% Datei in Produktion

Sie können auch PDO für die Verbindung zu MySQL in Erwägung ziehen, da es Ausnahmen als Standard verwendet Fehler melden,

%Vor%     
Gérald Croës 25.05.2011 08:05
quelle
3
%Vor%     
ChrisH 25.05.2011 06:51
quelle
3
  

Gibt es eine Möglichkeit, diese Fehler in der Protokolldatei zu erfassen ...?

Ja. Alle PHP-Fehler und Warnungen werden in die Fehlerprotokolldatei des Webservers geschrieben. Sie müssen also nichts weiter tun - es wird bereits ausgeführt.

Um den zweiten Teil Ihrer Frage zu beantworten, wenn Sie nicht möchten, dass die rohe Fehlermeldung auf dem Bildschirm angezeigt wird, können Sie dies auf zwei Arten verhindern:

  1. Verwenden Sie das Symbol% ​​co_de% vor Ihrem Funktionsaufruf - zB @ . Dadurch wird die Fehlerberichterstattung nur für diesen bestimmten Funktionsaufruf deaktiviert. Es wird allgemein als eine schlechte Idee angesehen, diese Technik zu oft zu verwenden, aber es ist gelegentlich legitim.

  2. Die bessere Option könnte darin bestehen, das globale Fehlermeldungs-Flag entweder in Ihrer $db = @mysql_connect(...); , in Ihrer lokalen PHP.ini -Datei oder in .htaccess innerhalb des Programms zu deaktivieren.

Normalerweise sollten Fehlerberichte auf der Webseite nur während der Entwicklung der Website verwendet werden. Sobald die Website online geschaltet wird, sollten Sie die Fehlerberichterstattung aktivieren, damit keine PHP-Fehler in Ihrem sorgfältig erstellten Seitenlayout vor Ihren Kunden auftreten. Alle auftretenden Fehler werden weiterhin in das Fehlerprotokoll des Servers geschrieben, aber nicht auf der Seite angezeigt.

Bei MySQL-Fehlern, wie dem, den Sie haben, können Sie den Fehler selbst innerhalb des Programms mit der ini_set() -Funktion erreichen. Dies wird die Details des letzten aufgetretenen Fehlers enthalten, so dass Sie programmatisch danach suchen und eine sinnvolle Fehlermeldung melden können.

    
Spudley 25.05.2011 08:19
quelle
1

Quelle: Ссылка

Hier ist ein Beispielcode für die Datenbankverbindung in PHP:

%Vor%     
improgrammer 07.05.2014 17:36
quelle
0
%Vor%     
Ravi MCA 18.04.2014 05:08
quelle