PHP を使用して、フォームからデータベース テーブルへの値の重複を防止したいと考えています。
私は以下を作成しました:
clientという名前のテーブルを持つデータベース:
CREATE TABLE clients(
firstName varchar(20),
lastName varchar(20),
primary key(firstName, lastName));
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>
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";
?>
これまでのところ、私のfrm_script.phpファイルでは上記が機能し、顧客が追加した一意のレコードが表示されます。ただし、重複レコードの場合は、「エラー クエリ データベース」がスローされます。
次のようにfrm_script.phpスクリプトを更新するにはどうすればよいですか?
名/姓の組み合わせを入力する際に重複する行が見つかった場合は、そのレコードとともに「クライアントは既にリストされています」というメッセージが表示されます。
フォームに名/姓の組み合わせを入力したときに重複する行が見つからない場合は、エントリがデータベースに挿入され、「顧客が追加されました」というメッセージが表示されます。
最初に SELECT を実行してから INSERT を実行する必要があることを読みましたが、これを既存のコードに実装する方法がわかりません。