Bu dersimizde PHP ile PDO kullanarak veritabanından veri silmeyi öğreneceğiz.
PDO ile veri silme işlemi için öncelikle PHP PDO veritabanı bağlantısı ile bağlantı yapılıp uygun SQL komutunun yazılması gerekiyor.
PDO ile veri silme işleminde DELETE SQL komutu kullanılmaktadır. Örnek silme komutu aşağıda.
DELETE FROM tablo_adi WHERE sutun_adi = silinecek_veri
Silme işleminde dikkat edilmesi gereken en önemli nokta, komutta WHERE kullanılmazsa tablodaki tüm verilerin silineceğidir.
Veri silme işleminde öncelikle gerekli olan veritabanı bağlantısını PDO ile yapalım.
<?php try { $baglanti = new PDO("mysql:host=localhost;dbname=dbadi", "dbkullaniciadi", "dbsifre"); $baglanti->exec("SET NAMES utf8"); $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "veri silme işlemi"; } catch (PDOException $e) { die($e->getMessage()); } $baglanti = null; ?>
Veri silme işlemi için exec, query veya prepare metodları kullanılır.
Dışarıdan değer almayan veri silme işlemi için exec veya query metodları kullanılabilir.
<?php try { $baglanti = new PDO("mysql:host=localhost;dbname=dbadi", "dbkullaniciadi", "dbsifre"); $baglanti->exec("SET NAMES utf8"); $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sonuc = $baglanti->exec("DELETE FROM kisiler WHERE kisi_sira BETWEEN 13 AND 23"); if ($sonuc > 0) { echo $sonuc . " kayıtlar silindi."; } else { echo kayıtlar silinemedi."; } } catch (PDOException $e) { die($e->getMessage()); } $baglanti = null; ?>
veya
<?php try { $baglanti = new PDO("mysql:host=localhost;dbname=dbadi", "dbkullaniciadi", "dbsifre"); $baglanti->exec("SET NAMES utf8"); $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sorgu = $baglanti->query("DELETE FROM kisiler WHERE kisi_sira = 13"); if ($sorgu->rowCount() > 0) { echo $sorgu->rowCount() . " kayıtlar silindi."; } else { echo "kayıtlar silinemedi."; } } catch (PDOException $e) { die($e->getMessage()); } $baglanti = null; ?>
Veri silme işleminin sonucunda PDOStatement($sorgu) sınıfındaki rowCount metodu silinen kayıt sayısını verir.
Veri silme işlemine dışarıdan değer alarak koşullu veri silme gibi bir işlem yapılacaksa prepare metodunun kullanılması faydalı olur.
<?php $sira = 1; try { $baglanti = new PDO("mysql:host=localhost;dbname=dbadi", "dbkullaniciadi", "dbsifre"); $baglanti->exec("SET NAMES utf8"); $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sorgu = $baglanti->prepare("DELETE FROM kisiler WHERE kisi_sira = ?"); $sorgu->bindParam(1, $sira, PDO::PARAM_INT); $sorgu->execute(); if ($sorgu->rowCount() > 0) { echo $sorgu->rowCount() . " kayıtlar silindi."; } else { echo "kayıtlar silinemedi."; } } catch (PDOException $e) { die($e->getMessage()); } $baglanti = null; ?>
Ön hazırlıklı sorgunun çalıştırılmasından sonra PDOStatement($sorgu) sınıfındaki rowCount metodu silinen kayıt sayısını verir.
Silinen kayıt sayısını belirten rowCount metodu kullanılarak veri silme işlemi kontrol edilebilmektedir.
Daha önce de belirttiğim gibi, veri silme işlemindeki dikkat edilmesi gereken en önemli nokta DELETE SQL komutuna uygun WHERE koşulunun yazılmasıdır.
Eğer WHERE koşulu belirtilmezse tablodaki tüm veriler silinir.