PDO ile Koşullu Toplu Kayıt

PDO ile Koşullu Toplu Kayıt

PDO ile toplu kayıt yaparken var olan satırları atlayıp kayıtlı olmayanları yeni kayıt olarak nasıl açarız? Bu sorgu için MySql de bir “unique” yani benzersiz sütuna ihtiyacımız var. Ayrıca oluşturacağımız PDO sorgusunda da “ON DUPLICATE KEY UPDATE” koşulunu kullanacağız.

PDO ile koşullu toplu kayıt için veritabanı gereksinimleri

Sorgumuzu yazmadan önce veritabanımızda var olan bir sütunu unique (benzersiz) olarak tanımlamalıyız. Bunu yaparken benzersiz seçtiğimiz sütuna girilecek veriler kesinlikle benzersiz olmalı. (Bu işlem için id kullanılamaz çünkü id auto increment olduğundan kayıt esnasında belirlerir bize kayıdı yapmadan önce işleyeceğimiz bir değer lazım)

Benzersiz bir sütun için kullanacağınız birçok yöntem internette mevcut bunlardan herhangi birini kullanabilirsiniz. (E-posta ve kayıt zamanı unique için en çok kullanılan değerler)

Benim kullandığım yöntem ise şöyle, son yaptığım işte eklediğim kayıtları incelediğimde eklediğim içeriğin url kısmının benzersiz olduğunu fark ettim. Fakat bir sorun vardı url uzunluğu benzersiz bir index oluşturmak için çok uzun olabiliyor. Bu durumu aşmak için kontrol adında bir sütun açıp kayıt için gelen url’yi ilk olarak MD5 formatına dönüştürüp sonra bu alana eklemek oldu. Tabi bu işlem sayesinde elimde benzersiz md5 ile kodlanmış bir değer oldu. İşte bu tamda ihtiyacımız olan veri.

Mysql’deki işimiz bu kadar şimdi geçelim PHP içinde kullanacağımız PDO sorgusuna.

PDO ile koşullu toplu kayıt için sorgu

Oluşturacağımız bu sorgudaki en kilit kısım “ON DUPLICATE KEY UPDATE” MySql fonksiyonu. Bu fonksiyon kayıt yapmadan önce eklenecek içeriğin tabloda var olup olmadığına bakar.

Şimdi yazacağımız koda geçmeden önce PDO ile toplu kayıt nasıl yapılır sorusuna cevaben bu işin standartlarını belirleyen W3Schools‘da bunu nasıl anlatmışlar. (Prepared Statements in PDO alt başlığı altında anlatılıyor)

PDO ile Koşullu Toplu Kayıt

Yukarıdaki koddan Foreach döngüsünü yani 24 ve 36 satırlardaki döngü başlangıcını ve sonunu çıkartırsanız sorgu her seferinde tek kayıt yapar.

Faydalı olması dileğiyle…

“PDO ile Koşullu Toplu Kayıt” için 2 yorum

  1. Dostum ben pek anlayamadım.

    Ürünler tablomda bir id ye ait verileri yeni son id ye aktarmak istiyorum butona tıklayınca bunu nasıl yapıcaz burada anlattığın gibi mi oluyor?

    1. Ekleme yapacağın yeni tablodaki id sütunun değerini “auto increment” olarak tanımlarsan otomatik her kayıtta son id alır

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir