unique
を配置することを検討してください この特定のテーブルのインデックス。次のコードは、インデックスを追加し、現在の重複を削除します。
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
これを追加したら、INSERT IGNORE
を使用します またはINSERT...ON DUPLICATE KEY UPDATE
。重複がない場合にのみ、挿入を実行します。
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
電子メールがすでにデータベースにあるため、Mysqlはエラーをスローします。ただし、IGNOREコマンドは、このクエリのエラーに注意を払わないようにスクリプトに指示しています。この場合、重複する行が予想されるためです。
また、INSERT IGNORE
を使用しても、失敗または成功のメッセージでユーザーに警告する方法があります。 。 MYSQL LAST_INSERT_ID()
を使用します 。 IDが与えられた場合、それが挿入されました。そうでない場合は、メールはすでにそこにあります(または別のエラーがありました)。