Kayıt zaten yok, sadece eğer MySQL tabloya eklemek nasıl?

4 Cevap php

Ben bir JSON nesne dize dizisi alıyorum. Ben bir DB bu dizeleri kaydetmek istiyorum, ama onlar orada değil zaten sadece. Ben girmek üzereyim ne DB zaten ne karşılaştırmak ve maçları dışlamak için en iyi yolu nedir?

PHP ve MySQL kullanıyorum.

4 Cevap

Ne tarif dizeleri zaten varsa yalnız kaydını bırakmak isteyen olduğundan, ne muhtemelen istediğiniz IGNORE değiştirici INSERT (yani do INSERT IGNORE ... .) Yinelenen bir anahtar bulunursa eğer sorgu hiçbir şey yapacaktır. Bu takmadan konum dize alanları onlara benzersiz tuşları var ki, elbette gerektirir.

Ne istediğinizi yapmak olabilir DEĞİŞTİR - bu ekler, ancak birincil anahtar zaten bu satır varsa ilk silinir. Eğer tablodaki diğer sütunları korumak gerekir sürece, bu çalışması gerekir.

http://dev.mysql.com/doc/refman/5.0/en/replace.html

Eşsiz alanları varolan bir satır eşleşen eğer MySQL size bir satır eklemek olmaz "görmezden" seçeneği ile bir ekleme deyimini kullanabilirsiniz. Tablo, ilgili alanları ile bir teklik kısıtlama dahil olması gerekir.

Çok basit bir örnek:

Your table : users Your fields : users_id, user_name, zip_code, created Unique Index : user_name

INSERT INTO users (user_name, zip_code, created) VALUES ('joe',75034,'2009-06-11') ON DUPLICATE KEY UPDATE users_id=LAST_INSERT_ID(id)

User_name benzersiz bir dizin var; Eğer öyleyse, bir kereden fazla eklemek olamaz. Yukarıdaki SQL kullandığınızda, sadece iyi ilk defa katacak. İkinci kez, aslında ekleme yapmayacağım. Yolu, çift anahtar üzerinde kurulum, artık PHP ile mysql son insert id getirebilir ve users_id gerçek bir ekleme veya yinelenen olup olmadığını ne olduğunu biliyorum.