Dalam PHP, apabila memasukkan sekumpulan rekod ke dalam pangkalan data dengan medan yang unik, adalah wajar untuk mengabaikan ralat masukan pendua. Sebaliknya, anda ingin memastikan bahawa hanya rekod baharu dimasukkan tanpa sebarang gangguan.
Melakukan pertanyaan SELECT untuk menyemak entri sedia ada sebelum memasukkan bukanlah pendekatan yang cekap. Berikut ialah kaedah alternatif menggunakan kefungsian terbina dalam MySQL:
INSERT... ABAIKAN:
Sintaks ini membolehkan anda memasukkan rekod dan abaikan jika pendua sudah wujud. Tiada ralat akan dilemparkan.
INSERT IGNORE INTO tbl (field1, field2, ...) VALUES (...);
GANTIKAN KE:
Sintaks ini menimpa rekod sedia ada dengan rekod baharu jika kunci utama perlawanan. Ralat akan ditimbulkan jika kunci utama tidak unik.
REPLACE INTO tbl (field1, field2, ...) VALUES (...);
MASUKKAN... PADA KEMASKINI KUNCI PENDULIK:
Ini sintaks memasukkan rekod baharu atau melakukan kemas kini jika kunci utama pendua adalah dijumpai.
INSERT INTO tbl (field1, field2, ...) VALUES (...) ON DUPLICATE KEY UPDATE field2 = NEW.field2;
Dengan mengandaikan jadual bernama 'tbl' dengan lajur 'id' dan 'value', pada mulanya mengandungi rekod dengan 'id' = 1 dan 'nilai' = 1:
GANTIKAN INTO:
REPLACE INTO tbl (id, value) VALUES (1, 50);
Keputusan: Mengganti rekod sedia ada dengan 'nilai' = 50.
INSERT ABAIKAN:
INSERT IGNORE INTO tbl (id, value) VALUES (1, 10);
Keputusan: Abaikan entri pendua kerana 'id' 1 sudah wujud.
INSERT... PADA KEMASKINI KUNCI DUA:
INSERT INTO tbl (id, value) VALUES (1, 200) ON DUPLICATE KEY UPDATE value = 200;
Keputusan: Mengemas kini rekod sedia ada dengan 'nilai' = 200 memandangkan 'id' 1 sudah wujud.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Entri Pendua dengan Cekap Semasa Sisipan MySQL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!