Aktueller Standort: Startseite> Neueste Artikel> So finden Sie den spezifischen Grund für den Versagen des Dateneinfügungsmittels durch MySQLI_STMT :: $ ERROR

So finden Sie den spezifischen Grund für den Versagen des Dateneinfügungsmittels durch MySQLI_STMT :: $ ERROR

gitbox 2025-05-28

In PHP ist es nicht ungewöhnlich, Fehler beim Einfügen von Daten bei der Verwendung der MySQLI -Erweiterung für Datenbankvorgänge zu erkennen. Um Probleme schnell zu finden und zu beheben, ist die Funktion MySQLI_STMT :: $ ERROR ein sehr nützliches Tool. In diesem Artikel wird untersucht, wie MySQLI_STMT :: $ ERROR verwendet wird, um die spezifischen Gründe für das Versagen des Dateneinfügungsfehlers herauszufinden und ihn zu debuggen.

1. Einführung

In PHP bietet MySQLI mehrere Möglichkeiten, mit MySQL -Datenbanken zu interagieren, und MySQLI_STMT ist eine Klasse für die Ausführung von Vorverarbeitungsanweisungen. Auf diese Weise kann die Abfrageeffizienz verbessert und das Risiko einer SQL -Injektion verringert werden. Der Dateninsertionsbetrieb kann jedoch aus verschiedenen Gründen fehlschlagen, und zu diesem Zeitpunkt müssen wir Debugging -Methoden verwenden, um die Ursache des Fehlers herauszufinden.

MySQLI_STMT :: $ ERROR ist ein Klassenattribut, das die Fehlermeldung zurückgibt, die die letzte Vorverarbeitungsanweisung nicht ausführen konnte. Auf diese Weise können wir spezifische Fehlerinformationen erfassen und anzeigen, die das Problem wiederum analysieren und beheben.

2. Debugug mit MySQLI_STMT :: $ ERROR

2.1 Vorverarbeitungsanweisungen

Schauen wir uns zunächst an, wie Sie MySQLI_STMT verwenden, um Vorverarbeitungsanweisungen zum Einfügen von Daten auszuführen. Angenommen, wir haben eine Datenbanktabelle Benutzer mit der Struktur wie folgt:

 CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100)
);

Wir möchten neue Daten einfügen:

 <?php
$mysqli = new mysqli("gitbox.net", "user", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("INSERT INTO users (username, email) VALUES (?, ?)");

if ($stmt === false) {
    die("Prepare failed: " . $mysqli->error);
}

$username = "john_doe";
$email = "[email protected]";

// Binden Sie Parameter
$stmt->bind_param("ss", $username, $email);

// Führen Sie einen Einsatzvorgang durch
if (!$stmt->execute()) {
    echo "Error: " . $stmt->error;  // Ausgabefehlermeldung
} else {
    echo "Record inserted successfully!";
}

$stmt->close();
$mysqli->close();
?>

2.2 Fehler auffangen

Im obigen Code überprüfen wir den Rückgabewert nach der Methode Execute () . Wenn der Einfügungsvorgang fehlschlägt, gibt $ stmt-> Fehler die MySQL-Fehlermeldung zurück. Sie können diese Informationen ausdrucken, um die spezifischen Gründe für den Fehler zu verstehen. Wenn die Datenbank beispielsweise eine Fehlermeldung wie "Daten für die Spalte 'E -Mail'" "aufgrund eines Fehlanpassungstyps zurückgibt.

Auf diese Weise können Sie intuitiv wissen, was schief gelaufen ist, und so zu beheben.

3.. Häufige Einfügungsfehler und Debugging

In der tatsächlichen Verwendung kann es viele Gründe für das Einfügen von Datenversagen geben. Hier sind einige häufige Fehler und ihre Gründe:

3.1 Datentyp -Nichtübereinstimmung

Spalten in MySQL -Datenbanken haben strenge Datentypeinschränkungen. Wenn der von Ihnen eingefügte Datentyp nicht mit dem von der Spalte definierten Typ übereinstimmt, schlägt die Einfügung fehl. Angenommen, die E -Mail -Spalte ist als VARCHAR (100) definiert. Ein Fehler wird ausgelöst, wenn Sie versuchen, eine E -Mail -Adresse mit mehr als 100 Zeichen einzufügen.

 $email = "a_very_long_email_address_that_exceeds_100_characters@example.com";

Zu diesem Zeitpunkt gibt $ stmt-> Fehler nach der Ausführung eine Fehlermeldung zurück, die wie folgt ähnelt:

 Error: Data too long for column 'email' at row 1

3.2 Einzigartiger Einschränkungen Konflikt

Wenn ein Feld in der Datenbanktabelle (z. B. Benutzername ) eine eindeutige Einschränkung aufweist, tritt ein eindeutiger Einschränkungskonflikt auf, wenn Sie versuchen, einen vorhandenen Wert einzufügen. Zu diesem Zeitpunkt fällt die Einfügungsoperation wie folgt mit der Fehlermeldung fehl:

 Error: Duplicate entry 'john_doe' for key 'username'

3.3 Nullwertbeschränkungen

Wenn die Spalte eine Nicht -Null -Einschränkung definiert und Sie versuchen, einen Nullwert einzufügen, wird auch die Einfügung fehlgeschlagen. Wenn beispielsweise die Spalte Benutzername nicht leer sein darf, wird der Versuch, eine leere Zeichenfolge oder Null einzufügen, einen Fehler ausgelöst:

 $username = NULL;

Die Fehlermeldung kann wie folgt sein:

 Error: Column 'username' cannot be null

3,4 m² Fehler

Natürlich ist es möglich, dass der Insertionsfehler durch SQL -Syntaxfehler verursacht werden kann. Sie können spezifische SQL-Fehlerinformationen abrufen, indem Sie $ STMT-> Fehler anzeigen.

4. Behandeln Sie Fehlermeldungen in MySQLI_stmt :: $ erfehler

Sobald Sie die Fehlermeldung erfasst haben, können Sie sie basierend auf der zurückgegebenen Fehlermeldung entsprechend verarbeiten. Zum Beispiel:

  • Wenn der Datentyp nicht übereinstimmt, müssen Sie sicherstellen, dass der gebundene Parametertyp korrekt ist.

  • Wenn es sich um einen eindeutigen Einschränkungskonflikt handelt, müssen Sie möglicherweise überprüfen, ob die Daten bereits vorhanden sind.

  • Wenn es sich um ein Problem mit Nullbeschränkungen handelt, müssen Sie sicherstellen, dass die erforderlichen Felder korrekt zugewiesen werden.

5. Schlussfolgerung

Mit MySQLI_STMT :: $ ERROR können Sie Probleme in den Dateneinfügungsvorgängen problemlos erfassen und debuggen. Es hilft Ihnen, die Ursache für Fehler schnell zu finden, die Zeit zu sparen und die Entwicklungseffizienz zu verbessern. Durch Überprüfen von Fehlermeldungen, Kombination von SQL -Fehlercodes und Einschränkungsdefinitionen für Datenbanktabellen können Sie schnell fixieren.

Durch die ordnungsgemäße Verwendung von MySQLI_STMT :: $ ERROR können Sie die Interaktion zwischen PHP und MySQL besser debuggen und stabilere und robustere Anwendungen erstellen.