Lorsque vous utilisez des bases de données MySQL dans PHP, vous pouvez rencontrer des erreurs courantes lors de l'insertion de données. L'un d'eux est une erreur de conflit de clé primaire, c'est-à-dire que lorsque vous essayez d'insérer une valeur de clé primaire existante, MySQL renvoie une erreur, généralement le numéro d'erreur 1062.
Lorsque vous utilisez une extension MySQLI , nous pouvons attraper ces erreurs via mysqli :: $ errno . L'attribut mysqli :: $ errno stocke le numéro d'erreur renvoyé par la dernière requête MySQL. Grâce à cette propriété, nous pouvons facilement détecter les conflits de clés primaires et les gérer en conséquence.
Voici un exemple simple montrant comment capturer les erreurs de clé primaire en double (numéro d'erreur 1062) lors de l'insertion de données:
<?php
// Configuration de la connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "my_database";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez si la connexion réussit
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
// Insérer des données SQL Déclaration
$sql = "INSERT INTO users (id, username) VALUES (1, 'new_user')";
// mettre en œuvre SQL Requête
if ($conn->query($sql) === TRUE) {
echo "Nouvelle insertion d'enregistrement avec succès";
} else {
// Vérifiez s'il s'agit d'une erreur de clé primaire en double(Numéro d'erreur 1062)
if ($conn->errno == 1062) {
echo "erreur: Valeur de clé primaire en double。";
} else {
echo "erreur: " . $conn->error;
}
}
// Fermer la connexion
$conn->close();
?>
Connexion de la base de données : Tout d'abord, nous utilisons de nouveaux mysqli () pour créer une connexion de base de données. Nous fournissons le nom d'hôte, le nom d'utilisateur, le mot de passe et le nom de base de données de la base de données. Si la connexion échoue, le programme sortira avec un message d'erreur.
Instruction SQL INSERT : Nous avons écrit une instruction INSERT simple qui insère un nouvel enregistrement dans le tableau des utilisateurs . Supposons que la colonne ID est la clé principale et que la valeur ID tentée d'inserter est 1 .
Exécuter SQL Query : Effectuez l'opération d'insertion SQL via $ Conn-> Query ($ SQL) . Si l'insertion est réussie, la valeur de retour est vraie et le message rapide pour l'insertion est réussi.
Erreur de capture : si l'insertion échoue (comme le conflit de clé primaire), $ Conn-> Errno renvoie un numéro d'erreur. Dans cet exemple, nous vérifions si $ con-> errno est 1062 , qui est le numéro d'erreur pour les erreurs de clé primaire répétées dans MySQL. S'il s'agit d'une erreur de clé primaire en double, nous publions un message d'erreur spécifique: "Valeur de clé primaire terne". S'il s'agit d'un autre type d'erreur, nous afficherons le message d'erreur renvoyé par MySQL.
Connexion de fermeture : une fois l'opération terminée, nous utilisons $ con-> close () pour fermer la connexion de la base de données et libérer les ressources.
En utilisant MySqli :: $ Errno, nous pouvons facilement attraper et gérer les erreurs MySQL, en particulier les erreurs de clé primaire en double courantes (numéro d'erreur 1062). Cette méthode permet d'améliorer la robustesse du programme et d'éviter les accidents du programme ou les erreurs causées par des clés primaires en double.
Si vous souhaitez améliorer davantage la logique de traitement, vous pouvez prendre des actions plus appropriées lorsque vous attrapez des erreurs de clé primaire en double, telles que le fait de sauter des insertions, de mettre à jour des enregistrements existants ou de renvoyer des messages d'erreur plus détaillés.