Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

sisipan mysqli - tetapi hanya jika bukan duplikat

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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. laravel 4 - bagaimana cara Membatasi (Ambil dan Lewati) untuk Eloquent ORM?

  2. MySQL, gabungkan setara untuk nilai kosong?

  3. Bagaimana saya bisa membangun kembali indeks dan memperbarui statistik di MySQL innoDB?

  4. kueri mysql tanggal, antara dua bidang tanggal

  5. Bagaimana cara mendapatkan catatan RANDOM dari setiap kategori di MySQL?