Pertimbangkan untuk menempatkan unique
indeks pada tabel khusus ini. Kode berikut akan menambahkan indeks dan menghapus duplikat saat ini:
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
Setelah ini ditambahkan, gunakan INSERT IGNORE
atau INSERT...ON DUPLICATE KEY UPDATE
. Mereka hanya akan membentuk sisipan jika tidak ada duplikat.
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
Mysql akan memunculkan error karena email sudah ada di database. Namun, perintah IGNORE memberi tahu skrip untuk tidak memperhatikan kesalahan kueri ini karena, dalam kasus ini, Anda mengharapkannya untuk baris duplikat.
Juga, ada cara untuk memperingatkan pengguna Anda dengan pesan kegagalan atau sukses, bahkan dengan INSERT IGNORE
. Gunakan MYSQL LAST_INSERT_ID()
. Jika ID diberikan, itu dimasukkan. Jika tidak, maka email tersebut sudah ada (atau ada kesalahan lain).