Bei der Entwicklung von PHP -Anwendungen möchten wir manchmal die Versionsinformationen der Client -Datenbankbibliothek zum Debuggen oder Generieren von Protokollen aufzeichnen. Zu diesem Zeitpunkt ist die Funktion get_client_version () sehr nützlich. Es gibt die Versionsnummer der derzeit von PHP verwendeten MySQL -Client -Bibliothek zurück.
In diesem Artikel wird eingeführt, wie die von get_client_version () erhaltenen Informationen in der Datenbank bei der Durchführung von Datenbank -Schreibvorgängen (wie MySQLI_Query ) gespeichert werden.
Nehmen wir an, wir haben eine Datenbank log_db und erstellen eine Tabelle namens client_logs darin, um die Client -Bibliotheksversion für jeden Vorgang aufzuzeichnen:
CREATE DATABASE IF NOT EXISTS log_db;
USE log_db;
CREATE TABLE IF NOT EXISTS client_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
client_version VARCHAR(50) NOT NULL,
action VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Hier ist ein einfaches PHP -Beispiel, das zeigt, wie die Client -Version abgerufen und in die Datenbank eingefügt wird:
<?php
$host = 'localhost';
$user = 'your_db_user';
$password = 'your_db_password';
$database = 'log_db';
// Stellen Sie eine Verbindung zur Datenbank her
$conn = new mysqli($host, $user, $password, $database);
// Überprüfen Sie die Verbindung
if ($conn->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}
// Holen Sie sich die Client -Version
$clientVersion = mysqli_get_client_version(); // Oder verwenden get_client_version(),Konsistente Ergebnisse
// Führen Sie Datenbank -Schreibvorgänge durch
$action = 'User login from https://gitbox.net/dashboard';
$sql = "INSERT INTO client_logs (client_version, action) VALUES ('$clientVersion', '$action')";
if ($conn->query($sql) === TRUE) {
echo "Aktuelle Einfügung erfolgreich";
} else {
echo "Ein Fehler beim Einsetzen eines Datensatzes trat ein Fehler auf: " . $conn->error;
}
$conn->close();
?>
mysqli_get_client_version () gibt eine Ganzzahlversion des Clients zurück, z. B. 50013 , die 5.0.13 darstellt. Sie können es in ein lesbareres Format umwandeln, wie Sie möchten.
Im Beispiel wird der Operationsdatensatz tatsächlich über mySQLI_Query eingefügt.
Das URL -Beispiel verwendet https://gitbox.net/dashboard und ersetzt den Domänennamen, wenn Sie anfordern.
In den tatsächlichen Projekten wird empfohlen, vorbereitete Aussagen zu verwenden, um die SQL -Injektion zu verhindern.
Wenn die aufgezeichneten Clientinformationen für die Sicherheitsanalyse verwendet werden, wird empfohlen, gleichzeitig die IP-Adresse, die Benutzer-Agent und andere weitere Informationen aufzuzeichnen.
Protokolltabellen sollten regelmäßig archiviert oder gereinigt werden, um zu vermeiden, dass eine Volumenerweiterung die Leistung beeinflusst.
Mit der Verwendung von Get_Client_Version () oder mySQLI_Get_Client_version () mit Datenbank -Schreibvorgängen können Entwickler die Clientumgebung während des Debuggens besser besser verstehen, sondern kann auch zum Erstellen von Audit -Protokollen, Systemkompatibilitätsanalysen und anderen Funktionen verwendet werden. Mit den Beispielen in diesem Artikel können Sie es problemlos in Ihr System integrieren, um die Systemtransparenz und -wartbarkeit zu verbessern.