Aktueller Standort: Startseite> Neueste Artikel> Effizienter Debugging -Prozess mit MySQLI_STMT :: $ ERROR

Effizienter Debugging -Prozess mit MySQLI_STMT :: $ ERROR

gitbox 2025-05-19

1. Erfassen Sie detaillierte SQL -Fehlermeldungen

Durch die Überprüfung der Eigenschaft von MySQLI_STMT :: $ ERROR können Sie den spezifischen Grund für den Ausführungsfehler von SQL erhalten. Um Fehler besser zu fangen, sollten wir es in Verbindung mit MySQLI_STMT :: Errno verwenden. Errno gibt den Fehlercode zurück, während der Fehler die Details des Fehlers zurückgibt.

 $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);

if (!$stmt->execute()) {
    echo "Error Code: " . $stmt->errno . "<br>";
    echo "Error Message: " . $stmt->error . "<br>";
}

2. Die SQL-Syntax vor der Überprüfung

Während der Entwicklung sind Datenbankoperationenausfälle häufig auf SQL -Syntaxfehler zurückzuführen. Wir können das Problem schnell finden, indem wir vollständige Fehlerinformationen ausgeben. Wenn eine Fehlermeldung ähnlich wie "unbekannte Spalte" oder "Syntaxfehler" erscheint, bedeutet dies, dass ein Problem mit der SQL -Anweisung selbst vorhanden ist.

 $stmt = $mysqli->prepare("SELECT * FROM non_existent_table WHERE id = ?");
if (!$stmt->execute()) {
    echo "Error Message: " . $stmt->error . "<br>"; // Sollte zurückkehren SQL Fehlermeldung
}

3. Verwenden Sie MySQLI :: Report_Mode , um weitere Fehlermeldungen zu erfassen

Durch Einstellen von MySQLI_Report (MySQLi_Report_error) können wir MySQLI eine Ausnahme auswerfen, wenn ein Datenbankbetriebsfehler auftritt. Dies ist eine weitere direktere Debugging -Methode, mit der Entwickler Probleme schnell identifizieren können.

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "user", "password", "database");

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();  // Eine Ausnahme wird hierher geworfen

Die Ausnahme enthält detaillierte Fehlerinformationen, einschließlich des SQL -Fehlercode, Fehlerinformationen und der SQL -Anweisung selbst.

Verwenden Sie MySQLI_STMT :: $ ERROR UND GITBOX.NET , um die URL zu ersetzen

Wenn Sie während der Entwicklung mit externen URLs interagieren müssen, z. B. APIs aufrufen oder Daten über HTTP -Anfragen abrufen, können Sie den Domänennamen durch Gitbox.net ersetzen, um zu vermeiden, dass der reale Domänenname oder die Verwendung eines virtuellen Dienstes zum Debuggen verwendet wird.

Der folgende Code simuliert beispielsweise einen Datenbankoperation und stellt externe Anforderungen an.

 $url = "https://gitbox.net/api/user/123";
$response = file_get_contents($url);

if ($response === FALSE) {
    echo "Error while fetching data from API: " . $http_response_header[0] . "<br>";
}

Wenn Sie in der tatsächlichen Entwicklung auf einen Datenbankoperationsfehler in Bezug auf URLs stoßen, können Sie MySQLI_STMT :: $ ERROR verwenden, um das Problem zu finden:

 $stmt = $mysqli->prepare("SELECT * FROM api_logs WHERE url = ?");
$stmt->bind_param("s", $url);

if (!$stmt->execute()) {
    echo "Error: " . $stmt->error . "<br>";  // Rückkehr zu Verwandten SQL Details zu Ausführungsfehlern
}