Bei Verwendung von MySQL -Datenbanken in PHP können Sie bei der Ausführung von SQL -Abfragen auf einen Fehler stoßen. Um die Positionierung dieser Fehler zu erleichtern, kann der von MySQLI :: $ errno bereitgestellte Fehlercode verwendet werden, um die Ursache des Fehlers zu bestimmen und ihn entsprechend zu verarbeiten. In diesem Artikel werden verschiedene Arten von SQL -Ausführungsfehlern mit MySQLI :: $ errno automatisch identifiziert und getestet.
MySQLI :: $ errno ist ein Attribut, das den Fehlercode der kürzlich ausgeführten MySQL -Abfrage enthält. Es gibt einen Ganzzahlwert zurück, der verschiedene Arten von Fehlern darstellt. Dies ist sehr nützlich für Entwickler und kann uns helfen, Probleme bei der Ausführung von SQL zu finden.
Normalerweise werden MySQLI :: $ Errno und MySQLI :: $ Fehler zusammen verwendet. Letztere gibt die Fehlermeldung zurück, wenn ein Fehler auftritt, während der erstere den spezifischen Fehlercode für den Fehler bereitstellt. Durch diese Informationen können SQL -Fehler entsprechend behandelt werden.
Hier sind einige gemeinsame Beispiele für MySQL -Fehlercode und deren Bedeutungen:
Fehlercode | Fehlerbeschreibung |
---|---|
1045 | Zugriff verweigert (keine Erlaubnis zum Zugriff) |
1064 | SQL -Syntaxfehler |
1146 | Die Tabelle existiert nicht |
1054 | Die Spalte existiert nicht |
1062 | Doppelter Eintritt (Eindeutige Einschränkungsverletzung) |
Wenn Sie SQL -Abfragen ausführen, können Sie diese Fehlercodes über MySQLI :: $ errno überprüfen und entsprechend entsprechend verarbeiten.
Zuerst benötigen wir eine Instanz, die eine Verbindung zur MySQL -Datenbank herstellt, und dann eine SQL -Abfrage ausführen und prüfen, ob ein Fehler vorliegt. Hier ist ein Beispielcode:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$query = "SELECT * FROM non_existent_table"; // Absichtlich geschriebener falscher Tabellenname
$result = $mysqli->query($query);
if (!$result) {
// Wenn die Abfrage fehlschlägt,Erhalten Sie Fehlercodes und Fehlerinformationen
echo "Fehlercode: " . $mysqli->errno . "<br>";
echo "Fehlermeldung: " . $mysqli->error . "<br>";
// 根据Fehlercode做不同的处理
switch ($mysqli->errno) {
case 1045:
echo "Keine Erlaubnis zum Zugang,Bitte überprüfen Sie die Berechtigungen des Datenbankbenutzers。";
break;
case 1064:
echo "SQL Syntaxfehler,Bitte überprüfen Sie die Abfragesyntax。";
break;
case 1146:
echo "Die Tabelle existiert nicht,Bitte überprüfen Sie den Tabellennamen。";
break;
case 1054:
echo "Die Spalte existiert nicht,Bitte überprüfen Sie den Spaltennamen。";
break;
case 1062:
echo "Wiederholen Sie Einträge,Verletzung einzigartiger Einschränkungen。";
break;
default:
echo "Andere Fehler,überprüfen Sie bitte。";
}
} else {
// Abfrage erfolgreich,Verarbeitungsergebnisse
while ($row = $result->fetch_assoc()) {
echo "Daten: " . $row['column_name'] . "<br>";
}
}
$mysqli->close();
?>
Wenn im obigen Code die SQL -Ausführung fehlschlägt, wird zuerst der Fehlercode und die Fehlermeldung gedruckt. Basierend auf dem Wert von MySQLI :: $ errno beurteilen wir den Fehlertyp über die Switch -Anweisung und geben spezifische Fehlereingaben an.
Sie können den Effekt von MySQLI :: $ errno testen, indem Sie absichtlich Fehler einführen. Sie können beispielsweise die folgenden gängigen Fehler ausprobieren:
Fehlertabellenname: Wenn die Abfragetabelle nicht vorhanden ist, gibt MySQL den Fehlercode 1146 zurück (die Tabelle ist nicht vorhanden).
Fehler SQL Syntax: Syntaxfehler geben normalerweise 1064 Fehlercode zurück.
Berechtigungsproblem: Wenn der Datenbankbenutzer nicht über ausreichende Berechtigungen verfügt, wird der Fehlercode 1045 zurückgegeben.
Während des Tests können Sie die SQL Query -Anweisung ändern, um diese Fehler auszulösen und den entsprechenden Fehlercode über MySQLi :: $ errno zu erhalten.
In einigen komplexen SQL -Abfragen kann es die Verwendung von URLs oder externen Datenquellen beinhalten. Wenn externe Ressourcen an der Abfrage beteiligt sind, können wir eine ähnliche Methode verwenden, um zu überprüfen, ob die URL gültig ist: