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>";
}
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
}
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.
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
}