In PHP bietet die MySQLI -Erweiterung umfangreiche Funktionen, um in MySQL -Datenbanken zu arbeiten. MySQLI_STMT :: $ ERROR UND MYSQLI :: ERRNO sind zwei wichtige Eigenschaften im Zusammenhang mit der Fehlerbehandlung, die Entwicklern dabei helfen können, Probleme in Datenbankoperationen zu fangen und zu diagnostizieren. In diesem Artikel werden die Unterschiede zwischen diesen beiden Eigenschaften und der Verwendung in Kombination untersucht, um die Debugging -Effizienz zu verbessern.
MySQLI_STMT :: $ ERROR ist eine Eigenschaft, mit der Fehlermeldungen im Zusammenhang mit dem aktuellen Vorverarbeitungsanweisungsobjekt ( MySQLI_STMT ) verwendet werden. Diese Eigenschaft gibt eine Zeichenfolge zurück, die Fehlermeldungen enthält, die beim Ausführen von Vorverarbeitungsanweisungen auftreten.
Wenn Sie beispielsweise eine SQL -Abfrage ausführen, wird die Fehlermeldung des MySQL -Servers die Fehlermeldung des MySQL -Servers zurückgeben, wenn die Abfrage fehlschlägt.
Beispielcode:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie die Datenbankverbindungen
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Vorbereiten SQL Stellungnahme
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
echo "VorbereitenStellungnahme失败: " . $mysqli->error;
exit;
}
// Parameter binden und ausführen
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// Überprüfen Sie die Ausführungsergebnisse
if ($stmt->error) {
echo "Ausführungsfehler: " . $stmt->error; // Detaillierte Fehlerinformationen ausgeben
}
?>
Im obigen Code wird $ STMT-> Fehler verwendet, um die bei der Ausführung von SQL-Anweisungen auftretende Fehlermeldung zu erhalten. Dies ist sehr nützlich für das Debuggen und Fehlerbehebung.
Mysqli :: errno ist eine Eigenschaft, mit der der Fehlercode für die letzte MySQL -Operation abgerufen wird. Im Gegensatz zu dem $ -Fehlerattribut, das detaillierte Fehlerinformationen zurückgibt, gibt Erno einen Ganzzahlwert zurück, der die spezifische Anzahl des MySQL -Fehlers angibt.
Beispielcode:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie die Datenbankverbindungen
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// implementieren SQL Abfrage
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
echo "MySQL Fehlercode: " . $mysqli->errno; // 输出Fehlercode
echo "MySQL Fehlermeldung: " . $mysqli->error; // Detaillierte Fehlerinformationen ausgeben
}
?>
Wenn die Abfrage fehlschlägt, gibt $ mysqli-> errno einen MySQL-Fehlercode zurück, beispielsweise bedeutet 1146 "Die Tabelle existiert nicht", während $ mysqli-> Fehler eine detaillierte Fehlermeldung der "Tabelle" -Datenbank zurückgibt.
Obwohl sowohl mySQLI_STMT :: $ ERROR als auch MySQLI :: Errno mit MySQL -Fehlern zusammenhängen, gibt es mehrere wichtige Unterschiede zwischen ihnen:
MySQLI_STMT :: $ ERROR ist die Fehlermeldung für die Vorverarbeitungsanweisung ( mysqli_stmt ), und MySQLi :: errno ist der Fehlercode für die MySQL -Verbindung. MySQLI_STMT :: $ ERROR liefert eine Fehlermeldungszeichenfolge, die normalerweise zur Ausgabe an Entwickler verwendet wird. MySQLI :: Errno gibt einen Fehlercode zurück, der häufig für die weitere Fehlerbehandlung und -diagnose in Programmen verwendet wird.
Verschiedene Aktionsbereiche : MySQLI_STMT :: $ ERROR gilt nur für SQL -Anweisungen, die über MySQLI_STMT ausgeführt werden, während MySQLI :: Errno für die gesamte Datenbankverbindung anwendbar ist und für alle Arten von Abfragen und Operationen anwendbar ist.
Wenn Sie den PHP -Datenbankcode debuggen, können Sie mit MySQLI_STMT :: $ ERRAGE oder MySQLI :: Errno allein helfen, das Problem zu finden. Wenn Sie jedoch zusammen die beiden zusammen verwenden, finden Sie schnell die Hauptursache des Problems.
Debugging -Vorschläge : Sie können zuerst MySQLI :: Errno überprüfen, um einen Fehlercode zu erhalten, und dann mySQLI_STMT :: $ ERROR oder MYSQLI :: ERROR verwenden, um detaillierte Fehlerinformationen zu erhalten. Durch die Kombination dieser beiden können Sie genauer bestimmen, welcher Teil falsch ist und geeignete Maßnahmen ergreifen.
Beispiel für kombinierte Nutzung: Code:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie die Datenbankverbindungen
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// implementieren SQL Abfrage
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
echo "MySQL Fehlercode: " . $mysqli->errno . "\n"; // 获取Fehlercode
echo "MySQL Fehlermeldung: " . $mysqli->error . "\n"; // 获取详细Fehlermeldung
}
?>
Erhalten Sie im obigen Code zuerst den Fehlercode über MySQLI :: Errno und dann die detaillierten Fehlerinformationen über MySQLI :: ERROR . Eine solche Kombination kann Entwicklern helfen, Probleme schnell zu diagnostizieren, insbesondere wenn Fehlercodes und Fehlermeldungen sich gegenseitig ergänzen.
MySQLI_STMT :: $ ERROR wird verwendet, um Fehlerinformationen in Bezug auf Vorverarbeitungsanweisungen zu erhalten, während MySQLI :: Errno verwendet wird, um Fehlercode für Datenbankverbindungen zu erhalten.
Sie liefern jeweils unterschiedliche Fehlermeldungsformate, erstere gibt eine Zeichenfolge zurück und letzteres gibt eine Nummer zurück.
Durch die Verwendung der beiden können Sie MySQL -Operationen effizienter debuggen, Probleme schnell entdecken und lösen.
Diese beiden Attribute sind sehr wichtige Debugging -Tools in der PHP -Entwicklung. Das Beherrschen ihrer Nutzung kann die Debugging -Effizienz erheblich verbessern und Fehler in den Datenbankoperationen verringern.