In PHP ist MySQLI eine häufig verwendete Datenbankerweiterung, die mehrere Möglichkeiten zur Interaktion mit der Datenbank bietet. Die MySQLI_STMT -Klasse ist Teil der MySQLI -Erweiterung, mit der Vorverarbeitungsanweisungen ausgeführt werden. Eine häufige Anforderung besteht darin, Fehlermeldungen zu erfassen und anzuzeigen, wenn SQL -Abfragen ausgeführt werden, um Entwicklern zu unterstützen und Probleme zu beheben. In diesem Artikel wird vorgestellt, wie Sie detaillierte Fehlerinformationen erhalten, wenn Sie SQL -Anweisungen über MySQLI_STMT :: $ ERRAGE ausführen.
Bei Verwendung von Vorverarbeitungsanweisungen können wir die Abfrage über das Objekt von MySQLI_STMT ausführen. Die MySQLI_STMT :: $ -Fehlervariable speichert die Fehlerinformationen bei der Ausführung der Abfrage. Wenn die SQL -Ausführung erfolgreich ist, ist der Wert eine leere Zeichenfolge. Wenn die SQL -Ausführung fehlschlägt, wird eine Fehlerbeschreibung zurückgegeben.
Das Folgende ist ein einfaches Beispiel, das zeigt, wie mySQLI_STMT :: $ ERROR verwendet wird, um Fehlerinformationen bei der Ausführung von SQL -Abfragen zu erhalten.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "username", "password", "database_name");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Vorbereiten SQL Stellungnahme
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);
// 检查Stellungnahme是否Vorbereiten成功
if ($stmt === false) {
die("VorbereitenStellungnahme失败: " . $mysqli->error);
}
// Binden Sie Parameter
$id = 1;
$stmt->bind_param("i", $id);
// Eine Frage ausführen
if (!$stmt->execute()) {
echo "implementieren SQL Stellungnahme时出错: " . $stmt->error;
} else {
echo "Abfrage erfolgreich!";
}
// 关闭Stellungnahme和连接
$stmt->close();
$mysqli->close();
?>
Im Code wird $ STMT-> Fehler verwendet, um Fehlerinformationen zu erfassen, wenn die SQL-Abfrage ausgeführt wird.
Wenn die Abfrageausführung fehlschlägt, enthält $ STMT-> Fehler eine bestimmte Fehlerbeschreibung, die den Entwicklern helfen kann, das Problem zu finden.
Wenn die Abfrage erfolgreich ausgeführt wird, gibt $ stmt-> Fehler eine leere Zeichenfolge zurück.
Nachdem wir die Fehlerinformationen über $ STMT-> Fehler erhalten haben, können wir unterschiedliche Debugging-Maßnahmen basierend auf verschiedenen Fehlerinformationen durchführen. Häufige Fehler können SQL -Syntaxfehler, Tabellen- oder Feldname -Schreibfehler oder Parameterbindungsfehler enthalten.
In Produktionsumgebungen, um zu vermeiden, dass Fehlerinformationen den Endbenutzern ausgesetzt werden, protokollieren Entwickler in der Regel Fehlerinformationen in Protokolldateien, anstatt sie direkt auf der Seite anzuzeigen.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "username", "password", "database_name");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Vorbereiten SQL Stellungnahme
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);
// 检查Stellungnahme是否Vorbereiten成功
if ($stmt === false) {
// Protokoll -Fehlerprotokoll
error_log("Vorbereiten SQL Stellungnahme失败: " . $mysqli->error, 3, "/path/to/error_log.txt");
die("VorbereitenStellungnahme失败");
}
// Binden Sie Parameter
$id = 1;
$stmt->bind_param("i", $id);
// Eine Frage ausführen
if (!$stmt->execute()) {
// Protokoll -Fehlerprotokoll
error_log("implementieren SQL Stellungnahme时出错: " . $stmt->error, 3, "/path/to/error_log.txt");
echo "Abfrage fehlgeschlagen,Bitte überprüfen Sie die Protokolldatei。";
} else {
echo "Abfrage erfolgreich!";
}
// 关闭Stellungnahme和连接
$stmt->close();
$mysqli->close();
?>
Wenn die Abfrage ausgeführt wird, schreibt die Funktion "ERROR_LOG () die Fehlermeldung in die Protokolldatei. Dies kann vermeiden, dass detaillierte Fehlerinformationen an den Endbenutzer aufgeführt und die Anwendungssicherheit verbessert werden.
Fehlerprotokolldateien sollten an einem sicheren Ort platziert werden und sind nur für Entwickler oder Administratoren zugegriffen.
Durch MySQLI_STMT :: $ ERROR können wir bei der Ausführung von SQL -Abfragen leicht detaillierte Fehlerinformationen abrufen und uns dabei helfen, Probleme schnell zu debuggen und zu lösen. Entwickler können entscheiden, ob die Fehlermeldung direkt angezeigt oder in einer Protokolldatei basierend auf den tatsächlichen Anforderungen aufgezeichnet werden. Bei der Verwendung von MySQLI -Erweiterung ist die Erfassung von Fehlerinformationen ein sehr wichtiger Betrieb und kann die Robustheit und Sicherheit der Anwendung effektiv verbessern.