Empêcher la duplication des enregistrements à une table à l'aide de PHP

Je veux éviter des doublons dans une table de base de données à partir d'un formulaire à l'aide de PHP.

J'ai créé le suivant:

Une base de données avec une table nommée clients:

CREATE TABLE clients(
 firstName varchar(20),
 lastName varchar(20),
 primary key(firstName, lastName));

Un simple formulaire nommé form.html

<h2>Enter your First and Last Name</h2>
<form action="frm_script.php" method="post">
<p><strong>First Name:</strong><br /> <input type="text" name="firstName" /></p>
<p><strong>Last Name:</strong><br /> <input type="text" name="lastName"/></p>
<input type="submit" name="submit" value="Add Customer" />
</form>

Une forme de traitement de script nommé frm_script.php

<?php
if(isset($_POST['submit']))
{

//get the name and comment entered by user
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];

//connect to the database
$dbc = mysqli_connect('host', 'username', 'password', 'dbname') or die('Error connecting to MySQL server');

//insert results from the form input
$query = "INSERT IGNORE INTO clients(firstName, lastName) VALUES('$firstName', '$lastName')";

$result = mysqli_query($dbc, $query) or die('Error querying database.');

mysqli_close($dbc);
}
echo "Customer Added";
?>

Jusqu'à présent avec mon frm_script.php fichier les travaux ci-dessus et pour un unique enregistrement s'affiche à la clientèle ajouté. Cependant, pour un enregistrement en double il jette "Erreur de l'Interrogation de la Base de données".

Comment puis-je mettre à jour le frm_script.php script pour la suite?

Si une ligne en double est trouvé à l'entrée dans un Premier /Dernier combinaison de nom, il doit afficher le message "Client déjà répertorié" avec cet enregistrement.

Si aucun doublon ligne est trouvée en entrant dans un Premier /Dernier nom sur la combinaison de la forme, il faut insérer l'entrée de la base de données et affiche le message "client ajoutée"

J'ai lu qu'une sélection doit être exécuté en premier, puis un INSERT mais je ne suis pas sûr de savoir comment mettre en œuvre ce dans mon code existant.

Remplacer die('Error querying database.') avec die(mysqli_error($dbc));
firstName='); DROP TABLE clients; --. Bye Bye les clients.
Bonjour Amal, j'aime votre solution. Une bonne manière de voir une double entrée est à l'origine d'un problème avec l'insertion de l'enregistrement.

OriginalL'auteur Andy R | 2013-10-31