Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysqli_connect Schwerwiegender Fehler:require()

Zwei GRÖSSTE Probleme mit Ihrem Code und Ihrer "Lösung":

  1. Du hast @ Betreiber überall. Dafür haben Sie -1 Stimme für Ihre Frage. @ Operator ist das Böse selbst. Die IT ist für die leere Seite verantwortlich, die Sie sehen.
  2. Jedoch hat das Heilmittel, das Sie gewählt haben, die Dinge verschlimmert. Dieses "ODER sterben"-Ding ist kein magischer Gesang, um ein Problem mit der Fehlerberichterstattung zu lösen. Und unsachgemäße Verwendung führt zu Fehlern wie du hast. Dafür haben Sie 1 in der Fehlermeldung.

Zunächst einmal ist Ihr Include in Ordnung, also lassen Sie es in Ruhe.

Befolgen Sie diese Anweisungen, um eine Fehlermeldung von mysqli zu erhalten:

Anstatt "or die" zufällig hinzuzufügen, benötigen Sie eine robustere und hilfreichere Lösung zur Fehlerberichterstattung.

Wenn Sie mysqli_query() im gesamten Anwendungscode verwenden, ohne ihn in eine Hilfsklasse einzukapseln, trigger_error() ist eine gute Möglichkeit, einen PHP-Fehler auszulösen, da es Ihnen auch die Datei und die Zeilennummer mitteilt, in der der Fehler aufgetreten ist

$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");

in allen Ihren Skripten
und seitdem werden Sie über den Grund informiert, warum das Objekt nicht erstellt wurde. (Wenn Sie neugierig auf diesen or sind Syntax, Ich habe es hier erklärt - es erklärt auch, warum Sie (1) haben in der Fehlermeldung)

Allerdings , wenn Sie Ihre Abfrage in eine Klasse kapseln, sind Datei und Zeile des Triggerfehlers ziemlich nutzlos, da sie auf den Aufruf selbst verweisen, nicht auf den Anwendungscode, der bestimmte Probleme verursacht hat. Wenn also mysqli-Befehle gekapselt ausgeführt werden, muss ein anderer Weg verwendet werden:

$result = $mysqli->query($sql);
if (!$result) {
    throw new Exception($mysqli->error." [$query]");
}

as Exception liefert Ihnen einen Stack-Trace , der Sie an die Stelle führt, von der eine fehlerhafte Anfrage aufgerufen wurde.

Beachten Sie, dass Sie PHP-Fehler im Allgemeinen sehen können müssen. Auf einer Live-Site müssen Sie in die Fehlerprotokolle schauen, also müssen die Einstellungen geändert werden

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

auf einem lokalen Entwicklungsserver ist es in Ordnung, Fehler auf dem Bildschirm zu machen:

error_reporting(E_ALL);
ini_set('display_errors',1);

und natürlich sollten Sie niemals den Fehlerunterdrückungsoperator (@) vor Ihren Anweisungen verwenden.