Veritabanı bağlantımızı PDO ile gerçekleştirdikten sonra, tekrar eden kayıtları şu şekilde bulabiliyoruz. Örnek tablomuzda id’si auto increment olan bir tablomuz var ve biz bu tabloda konu başlığı aynı olanları bulacağız. Mantık olarak ilk eklenen yanı id’si küçük olan orjinal, daha sonra eklenen yani id’si orjinalinden büyük olanı kopya gibi düşünüyoruz. Bu senaryoda mükerrer olan sütun baslik olarak değerlendirilecek.

idresimbaslikicerik
1test.jpgKonu başlığımLorem ipsum
2deneme.jpgKonu başlığımLorem ipsum..
$query = $db->query("SELECT resim,baslik as KLN, Count(baslik) as ADET, Max(id) as id from blog group by baslik HAVING COUNT(baslik) > 1", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
	foreach( $query as $row ){
	  echo $row['id']."-".$row['KLN']."--".$row['ADET']."
";
	}
}
//ÇIKTI
//id-baslik--adet
// 2-Konu başlığım--2

Listelemeyi başardık, id’si en büyük olan baslik ve bundan kaç adet olduğunu yazdırmış olduk. Şimdi foreach döngüsü arasına silme kodumuzu yazabiliriz. Ben Basicdb sınıfından faydalanarak tek satırlık silme kodumu yazıyorum. Yukarıdaki kodun düzenlenmiş son hali;

$query = $db->query("SELECT resim,baslik as KLN, Count(baslik) as ADET, Max(id) as id from blog group by baslik HAVING COUNT(baslik) > 1", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
	foreach( $query as $row ){
		$db->delete('blog')->where('id', $row['id'])->done();
		unlink("./assets/images/kitap/".$row['resim']);
		echo $row['id']."-".$row['KLN']."--".$row['ADET']."<br>";
	}
}

Son haliyle tekrar eden kayıtların tamamını ve sunucudaki resimlerin tamamını silmiş olduk. Eğer aynı kayıttan 2’den fazla var ise kodu tekrar çalıştırmalısınız.