Bei der Entwicklung von PHP -Anwendungen interagieren wir häufig mit der Datenbank. Bei Verwendung von MySQLI -Erweiterung sind MySQLI :: $ errno und mySQLI :: $ error sehr häufig und wichtige Tools zum Fangen von Datenbankfehlern. Viele Entwickler können jedoch den Zweck von MySQLI :: $ errno falsch verstehen und es einfach als Tool betrachten, um auf Datenbankverbindungsfehler zu suchen. Dieses Missverständnis kann die Fehlerbehebung komplizierter machen, insbesondere wenn Fehler auftreten. In diesem Artikel wird detailliert analysiert, wie MySQLI :: $ errno korrekt verwendet wird, um häufige Missverständnisse zu vermeiden.
Mysqli :: $ errno ist eine Eigenschaft eines MySQLI -Objekts, mit dem der Fehlercode der vorherigen MySQL -Operation gespeichert wird. Wenn die vorherige Operation erfolgreich ausgeführt wurde, beträgt der Wert von MySQLI :: $ errno 0 , andernfalls wird ein Fehlercode ungleich Null zurückgegeben.
Es ist zu beachten, dass MySQLi :: $ errno nicht nur für Datenbankverbindungsfehler geeignet ist, sondern auch für alle über MySQLi ausgeführten SQL -Abfrageberationen.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie die Verbindung
if ($mysqli->connect_errno) {
echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
exit();
}
// Eine Frage ausführen
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);
// Überprüfen Sie, ob die Abfrage erfolgreich ist
if (!$result) {
echo "Abfragefehler: " . $mysqli->error;
echo "Fehlercode: " . $mysqli->errno; // Holen Sie sich den Fehlercode
}
$mysqli->close();
?>
In diesem Code gibt MySQLI :: $ errno den Fehlercode für den Abfrageberalfehler zurück (falls vorhanden), und MySQLI :: $ ERROR liefert detaillierte Informationen über den Fehler.
Es gibt viele Entwickler, die fälschlicherweise glauben, dass MySQLI :: $ errno nur verwendet wird, um Fehler bei Datenbankverbindungen zu überprüfen. Wenn wir MySQLI :: $ errno falsch verstehen, kann dies dazu führen, dass wichtige Fehlerinformationen bei der Fehlerbehebung bei anderen Problemen fehlen. Tatsächlich kann MySQLI :: $ errno verwendet werden, um nach Abfragefehlern, Aktualisierung von Fehlern und sogar Versagen des Transaktionsbeschaffungsfehlers usw. zu überprüfen.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Falsche Annahmen:只Überprüfen Sie die VerbindungFehler
if ($mysqli->connect_errno) {
echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
exit();
}
// Der falsche Weg:Überprüfen Sie nicht andere SQL Fehler
$query = "SELECT * FROM non_existing_table";
$mysqli->query($query);
// 此处没有Überprüfen Sie, ob die Abfrage erfolgreich ist,可能错过了Abfragefehler
$mysqli->close();
?>
Im obigen Code kann der Entwickler fälschlicherweise glauben, dass er nur auf die Verbindungsfehler achten muss und die Überprüfung von Abfragefehlern ignoriert. Dies führt zu anderen Problemen in der Datenbank, wenn die Abfrage ausgeführt wird.
Um das oben genannte Missverständnis zu vermeiden, sollten wir MySQLI :: $ errno nach der Ausführung jeder Datenbankoperation überprüfen, unabhängig davon, ob es sich um eine Verbindungsoperation, eine Abfrage-, Aktualisierungs-, Löschen- und andere Datenbankoperationen handelt. Nur auf diese Weise können potenzielle Datenbankprobleme früher entdeckt werden.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie die VerbindungFehler
if ($mysqli->connect_errno) {
echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
exit();
}
// Eine Frage ausführen
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);
// Überprüfen Sie, ob die Abfrage erfolgreich ist
if (!$result) {
echo "Abfragefehler: " . $mysqli->error;
echo "Fehlercode: " . $mysqli->errno; // 获取Abfragefehler码
}
$mysqli->close();
?>
Im obigen Code prüfen wir nicht nur auf Datenbankverbindungsfehler, sondern auch nach möglichen Abfragefehlern nach der Abfrage. Wenn Sie dies tun, stellt wir sicher, dass wir die Probleme in jedem Link erfassen und so Probleme effizienter positionieren und lösen.
Um den von MySQLI :: $ errno zurückgegebenen Fehlercode klarer zu verstehen, können wir das MySQL -Fehlercode -Dokument konsultieren. Hier sind einige häufige Beispiele für Fehlercode:
1045 : "Zugriff für den Benutzer verweigert" - Benutzername oder Kennwortfehler
1146 : "Tabelle existiert nicht" - Die Tabelle existiert nicht
1064 : "Sie haben einen Fehler in Ihrer SQL -Syntax" - SQL -Syntaxfehler
Das Verständnis dieser Fehlercodes hilft uns, Fehlerinformationen besser zu interpretieren und schnell Probleme zu finden.
MySQLI :: $ errno wird hauptsächlich zum Bereitstellen von Fehlercode verwendet, während MySQLI :: $ ERROR eine detaillierte Fehlerbeschreibung zurückgibt. Bei Problemen bei der Fehlerbehebung müssen Sie diese beiden Attribute normalerweise in Kombination verwenden, um die Gründe für den Fehler des Datenbankvorgangs vollständig zu verstehen.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);
if (!$result) {
echo "Abfrage fehlgeschlagen: " . $mysqli->error . "<br>";
echo "Fehlercode: " . $mysqli->errno;
}
$mysqli->close();
?>
Durch gleichzeitig Ausgabe von Fehlerinformationen und Fehlercodes können wir ein klareres Verständnis der Grundursache des Problems haben und entsprechende Maßnahmen ergreifen, um dies zu beheben.
Mysqli :: $ errno ist eine sehr wichtige Eigenschaft in PHP. Es wird nicht nur zur Überprüfung von Datenbankverbindungsfehlern verwendet, sondern wird auch in allen MySQL -Operationen häufiger verwendet. Um die durch Missverständnisse verursachte Fehlerbehebung zu vermeiden, sollten wir nach jedem Datenbankvorgang MySQLI :: $ errno überprüfen, um sicherzustellen, dass potenzielle Fehler rechtzeitig erfasst werden können. Das korrekte Verständnis und die Verwendung von MySQLI :: $ errno kann es uns ermöglichen, Probleme während des Entwicklungsprozesses effizienter zu beheben und das Auftreten von Fehler zu verringern.