Mysqli :: get_warnings ist eine Methode, die von der MySQLI -Erweiterung von PHP bereitgestellt wird, um Warninformationen zu erhalten, die durch kürzlich ausgeführte SQL -Anweisungen generiert werden. Es gibt eine Kette von MySQLi_Warning -Objekten zurück, die jeweils Warndetails wie Fehlercodes und Warnmeldungen enthalten.
Durch Durchqueren dieser Warnungen können Entwickler Details erfassen, die nicht explizit geworfen werden, aber die Richtigkeit der Daten beeinflussen können.
Nachdem Sie die SQL -Abfrage ausgeführt haben, rufen Sie Get_Warnings an, um zu überprüfen, ob eine Warnung vorliegt.
Überqueren Sie die Warnkette und sammeln Sie Warninformationen.
Die Warninformationen werden in Echtzeit für die Bequemlichkeit der nachfolgenden Analyse ausgegeben oder gespeichert.
Es kann mit dem Protokollsystem oder dem Front-End-Display kombiniert werden, um ein visuelles Überwachungswerkzeug zu bilden.
Das folgende Beispiel zeigt, wie Sie eine SQL -Anweisung ausführen und Warninformationen über MySQLI :: get_warnings erhalten und sie an das Debug -Protokoll ausgeben.
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Beispiel SQL:Das Einsetzen eines doppelten Primärschlüssels kann eine Warnung erzeugen
$sql = "INSERT INTO test_table (id, name) VALUES (1, 'Alice')";
// Eine Frage ausführen
if ($mysqli->query($sql) === TRUE) {
echo "Abfragenausführung erfolgreich\n";
// Eine Warnung bekommen
if ($warnings = $mysqli->get_warnings()) {
do {
echo "Warncode: " . $warnings->errno . "\n";
echo "Warnmeldung: " . $warnings->message . "\n";
} while ($warnings = $warnings->next());
} else {
echo "Keine Warnung\n";
}
} else {
echo "Abfrageausführung fehlgeschlagen: " . $mysqli->error . "\n";
}
$mysqli->close();
?>
Um Warninformationen zu bestehen, können Sie Warnungen in eine Datei schreiben:
function logWarnings($mysqli) {
if ($warnings = $mysqli->get_warnings()) {
$logFile = 'db_warnings.log';
do {
$log = date('Y-m-d H:i:s') . " - Warning {$warnings->errno}: {$warnings->message}\n";
file_put_contents($logFile, $log, FILE_APPEND);
} while ($warnings = $warnings->next());
}
}
Die automatische Aufzeichnung kann nach jedem Datenbankvorgang durch Aufrufen von Logwarnings ($ mySQLI) erreicht werden.
Das Aufrufen von PHP -Skripten über Ajax gibt die neuesten Warnungen zurück. Die Front-End-Seite kann die Warnliste in Echtzeit aktualisieren und es den Entwicklern erleichtert.
Warnungen beziehen sich nur auf den neuesten Datenbankvorgang, und die alten Warnungen werden nach Ausführung der neuen Erklärung überschrieben.
Mysqli :: get_warnings ist nur gültig, wenn MySQL Server Warnmechanismen unterstützt.
Häufige Fragen und Warnungen aufzeichnen können einen gewissen Einfluss auf die Leistung haben. Es wird empfohlen, nur beim Debuggen der Umwelt oder der Ausnahmeüberwachung zu aktivieren.
Mit MySQLI :: Get_Warnings -Funktion von PHP können Sie Warninformationen in Datenbankoperationen effektiv erhalten. Durch Kombination von Protokollierung und Echtzeit-Präsentationstechnologie kann ein einfaches Datenbankwarnüberwachungsinstrument erstellt werden, mit dem Entwickler potenzielle Probleme rechtzeitig erkennen und den Datenbankzugriff und die Anwendungsleistung optimieren können.