Bei Verwendung von MySQL -Datenbanken in PHP können Sie beim Einfügen von Daten auf einige häufige Fehler stoßen. Einer von ihnen ist ein primärer Schlüsselkonfliktfehler, dh wenn Sie versuchen, einen vorhandenen Primärschlüsselwert einzufügen, gibt MySQL einen Fehler zurück, normalerweise die Fehlernummer 1062.
Bei Verwendung von MySQLI -Erweiterung können wir diese Fehler über MySQLI :: $ errno aufnehmen. Das Attribut von MySQLi :: $ errno speichert die von der letzten MySQL -Abfrage zurückgegebene Fehlernummer. Durch diese Eigenschaft können wir primäre Schlüsselkonflikte leicht erkennen und entsprechend umgehen.
Hier ist ein einfaches Beispiel, das zeigt, wie Sie doppelte Primärschlüsselfehler (Fehlernummer 1062) beim Einfügen von Daten erfassen:
<?php
// Datenbankverbindungskonfiguration
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "my_database";
// Eine Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($conn->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}
// Daten einfügen SQL Stellungnahme
$sql = "INSERT INTO users (id, username) VALUES (1, 'new_user')";
// implementieren SQL Abfrage
if ($conn->query($sql) === TRUE) {
echo "Neue Rekordinsertion erfolgreich";
} else {
// Überprüfen Sie, ob es sich um einen doppelten Primärschlüsselfehler handelt(Fehlernummer 1062)
if ($conn->errno == 1062) {
echo "Fehler: Doppelter Primärschlüsselwert。";
} else {
echo "Fehler: " . $conn->error;
}
}
// Schließen Sie die Verbindung
$conn->close();
?>
Datenbankverbindung : Erstens verwenden wir neue MySQLI (), um eine Datenbankverbindung zu erstellen. Wir geben den Hostnamen, den Benutzernamen, den Kennwort und den Datenbanknamen der Datenbank an. Wenn die Verbindung fehlschlägt, wird das Programm mit einer Fehlermeldung beendet.
SQL -Einfügeanweisung : Wir haben eine einfache Anweisung in Einfügen geschrieben, in der ein neuer Datensatz in die Benutzertabelle einfügt. Angenommen, die ID -Spalte ist die Primärschlüssel und der ID -Wert, der versucht hat, 1 zu fügen, ist 1 .
SQL Abfrage ausführen : Führen Sie den SQL-Einfügungsvorgang über $ conn-> Abfrage ($ SQL) durch. Wenn die Einfügung erfolgreich ist, ist der Rückgabewert wahr und die schnelle Nachricht für die Einfügung erfolgreich.
Fangfehler : Wenn die Insertion fehlschlägt (z. B. Primärschlüsselkonflikt), gibt $ conn-> errno eine Fehlernummer zurück. In diesem Beispiel überprüfen wir, ob $ conn-> errno 1062 ist, was die Fehlernummer für wiederholte Primärschlüsselfehler in MySQL ist. Wenn es sich um einen doppelten Primärschlüsselfehler handelt, geben wir eine bestimmte Fehlermeldung aus: "langweiliger Primärschlüsselwert". Wenn es sich um einen anderen Fehlertyp handelt, werden die von MySQL zurückgegebenen Fehlermeldung angezeigt.
Schließenanschluss : Nach Abschluss des Vorgangs verwenden wir $ conn-> close (), um die Datenbankverbindung zu schließen und die Ressourcen zu veröffentlichen.
Durch die Verwendung von MySQLi :: $ errno können wir MySQL -Fehler leicht fangen und umgehen, insbesondere häufige doppelte Primärschlüsselfehler (Fehlernummer 1062). Diese Methode verbessert die Robustheit des Programms und vermeidet Programmabstürze oder Fehler, die durch doppelte Primärschlüssel verursacht werden.
Wenn Sie die Verarbeitungslogik weiter verbessern möchten, können Sie angemessenere Aktionen ergreifen, wenn Sie doppelte Primärschlüsselfehler erfassen, z. B. Einfügungen überspringen, vorhandene Datensätze aktualisieren oder detailliertere Fehlermeldungen zurückgeben.