Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie $ errno, um das Testen verschiedener SQL -Fehlertypen zu automatisieren

Verwenden Sie $ errno, um das Testen verschiedener SQL -Fehlertypen zu automatisieren

M66 2025-05-28

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.

1. Verstehen Sie MySQLI :: $ errno

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.

2. Häufige MySQL -Fehlercodes

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.

3. Verwenden Sie MySQLI :: $ errno, um Fehler zu behandeln

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.

V.

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.

5. Beispiel: SQL -Abfrage, die beim URL -Test fehlgeschlagen ist

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: