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

Periksa apakah baris ada di database sebelum memasukkan

Lebih baik untuk menetapkan batasan pada kolom Anda untuk mencegah duplikat data daripada memeriksa dan menyisipkan.

Cukup tetapkan batasan UNIK pada imdbid :

ALTER TABLE `requests` ADD UNIQUE `imdbid_unique`(`imdbid`);

Alasan melakukan ini adalah agar Anda tidak mengalami kondisi balapan .

Ada jendela kecil antara menyelesaikan pemeriksaan, dan benar-benar memasukkan data, dan di jendela kecil itu, data dapat dimasukkan yang akan bertentangan dengan data yang akan dimasukkan.

Larutan? Gunakan batasan dan periksa $DBH->error() untuk kesalahan penyisipan. Jika ada kesalahan, Anda tahu bahwa ada duplikat dan Anda dapat memberi tahu pengguna Anda.

Saya perhatikan bahwa Anda menggunakan ini, $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); . Dalam hal ini, Anda tidak perlu memeriksa ->error() karena PDO akan melempar pengecualian. Bungkus saja eksekusi Anda dengan try and catch seperti ini:

$duplicate = false;

try {
    $STH->execute();
} catch (Exception $e) {
    echo "<p>Failed to Request ".$_POST['imdbid']."!</p>";
    $duplicate = true;
}

if (!$duplicate)
    echo "<p>Successfully Requested ".$_POST['imdbid']."! Thanks!</p>";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memasukkan banyak baris dalam database mysql sekaligus dengan pernyataan yang disiapkan?

  2. Mengubah folder tmp mysql

  3. Perbedaan antara mysql &mysqli

  4. Bagaimana cara mengulang fungsi tersimpan di MySQL dengan benar?

  5. Tidak dapat mengubah kolom yang digunakan dalam batasan kunci asing