Die Verwendung von MySQLI -Erweiterungen ist eine der häufigsten Möglichkeiten, Datenbankvorgänge in PHP durchzuführen. Wenn Datenbankabfragefehler jedoch in der Regel ein klares und detailliertes Fehleraufforderungssystem benötigen, um Entwicklern zu helfen, Probleme zu lokalisieren und zu beheben. MySQLI :: $ errno kann verwendet werden, um Fehlercodes zu erhalten, die in Datenbankvorgängen auftreten. In Kombination mit MySQLI :: $ ERROR können wir ein detailliertes Fehlereingabesystem implementieren.
In diesem Artikel wird vorgestellt, wie Sie MySQLI :: $ errno verwenden, um ein detailliertes Datenbank -Query -Fehleraufforderungssystem zu erstellen, um sicherzustellen, dass Entwickler bei Abfragefehlern ausreichende Fehlerinformationen erhalten können.
In einem tatsächlichen Fehlerbehandlungssystem müssen wir zunächst eine Verbindung zur Datenbank herstellen. In PHP können wir die MySQLI -Klasse dazu verwenden.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Eine Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);
// Verbindung erkennen
if ($conn->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}
?>
Wenn die Ausführung der Datenbankabfrage fehlschlägt, gibt MySQLI :: $ errno die falsche Nummer zurück, und MySQLI :: $ ERROR gibt die Fehlerbeschreibungsinformationen zurück. Wir können diese Informationen verwenden, um detaillierte Fehleranpassungen zu generieren.
<?php
$sql = "SELECT * FROM non_existing_table"; // Eine falsche Frage
$result = $conn->query($sql);
if (!$result) {
$errorCode = $conn->errno; // Holen Sie sich den Fehlercode
$errorMessage = $conn->error; // Fehlermeldung abrufen
echo "Abfragefehler,Fehlercode:$errorCode,Fehlermeldung:$errorMessage";
}
?>
Im obigen Code haben wir absichtlich eine falsche SQL -Abfrage geschrieben, um den Fehler auszulösen. Wenn die Abfrage fehlschlägt, erhalten wir den Fehlercode über $ conn-> errno und die Fehlerbeschreibung über $ conn-> Fehler, um Entwicklern das Problem klar zu verstehen.
Um die Fehleraufforderung in Betrieb zu gestalten, kann die Fehlermeldung in eine HTML -Seite angeordnet werden, einschließlich weitere diagnostische Informationen wie Fehlercode, Abfragehalt, Fehlerzeit usw.
<?php
function handleDatabaseError($conn) {
$errorCode = $conn->errno;
$errorMessage = $conn->error;
$query = $conn->last_query; // Holen Sie sich die zuletzt ausgeführte Abfrage
$timestamp = date("Y-m-d H:i:s");
echo "<h2>数据库Abfragefehler</h2>";
echo "<p><strong>Fehlerzeit:</strong>$timestamp</p>";
echo "<p><strong>Fehlercode:</strong>$errorCode</p>";
echo "<p><strong>Fehlermeldung:</strong>$errorMessage</p>";
echo "<p><strong>Ausführungsabfrage:</strong><pre>$query</pre></p>";
echo "<p>Bitte überprüfen SQL Fragen Sie ab und versuchen Sie, Fehler zu beheben。</p>";
}
$sql = "SELECT * FROM non_existing_table"; // Fehlerabfrage
$result = $conn->query($sql);
if (!$result) {
handleDatabaseError($conn); // Aufrufen der Fehlerbehandlungsfunktion
}
?>
In diesem Beispiel erstellen wir eine gehandelte Funktion für die Einführung, die detaillierte Fehlerinformationen formatiert und anzeigt. Wir haben auch ausgeführte SQL -Abfragen demonstriert, um Entwicklern dabei zu helfen, die Grundursache des Problems schnell zu finden.
Zusätzlich zum Anzeigen von Fehlermeldungen auf der Seite ist es auch üblich, Fehlermeldungen für Protokolldateien aufzuzeichnen. Dadurch wird die direkte Belichtung sensibler Datenbankfehlermeldungen in Produktionsumgebungen vermieden.
<?php
function logDatabaseError($conn) {
$errorCode = $conn->errno;
$errorMessage = $conn->error;
$query = $conn->last_query;
$timestamp = date("Y-m-d H:i:s");
$logMessage = "[$timestamp] Fehlercode: $errorCode, Fehlermeldung: $errorMessage, Abfrage: $query\n";
file_put_contents("database_errors.log", $logMessage, FILE_APPEND);
}
$sql = "SELECT * FROM non_existing_table"; // Fehlerabfrage
$result = $conn->query($sql);
if (!$result) {
logDatabaseError($conn); // Protokollefehler zum Protokollieren
handleDatabaseError($conn); // Prozess- und Zeigen Sie Fehler an
}
?>
Der obige Code zeigt, wie Fehlerinformationen in die Protokolldatei Database_errors.log geschrieben werden. Auf diese Weise können Entwickler alle Datenbankabfragen Fehler in der Protokolldatei des Servers anzeigen, ohne sie direkt dem Benutzer aussetzen zu müssen.
Durch die Kombination von MySQLI :: $ Errno und MySQLI :: $ ERROR können wir ein detailliertes Datenbank -Abfrage -Fehleraufforderung erstellen, um den Entwicklern dabei zu helfen, schnell Probleme zu finden. Wir können auch die Robustheit des Systems durch Protokollierung weiter verbessern und sicherstellen, dass sensible Datenbankfehlerinformationen in der Produktionsumgebung nicht aufgedeckt werden.
Diese Fehlerbehandlungsmethode kann die Entwicklungs- und Debugging -Effizienz erheblich verbessern, insbesondere bei komplexen Datenbankoperationen. Wenn Sie die Sicherheit und Wartbarkeit Ihres Systems weiter verbessern möchten, können Sie auf dieser Grundlage weitere Log -Analyse- und Fehlerüberwachungsfunktionen hinzufügen.