PHP PDO İle Veritabanındaki Verileri Güncelleme

PHP

Bu dersimizde PHP ile PDO kullanarak veritabanındaki verileri güncellemeyi öğreneceğiz.

PDO ile veri güncelleme işlemi için öncelikle PHP PDO veritabanı bağlantısının yapılıp uygun SQL komutunun yazılması gerekmektedir.

PDO ile veritabanındaki verileri güncelleme işlemi veri silme işlemine benzer bir yapıda. Güncelleme işlemi UPDATE SQL komutu ile yapılıyor.

Örnek veri güncelleme kodları aşağıda.

1
UPDATE tablo_adi SET sutun1 = yeni_veri, sutun2 = yeni_veri WHERE sutun_adi = guncellenecek_veri

Veritabanındaki verileri güncelleme işlemi yaparken WHERE komutu kullanılmazsa tablodaki tüm veriler güncellenir. Buna çok dikkat etmek gerekiyor.

Veri güncelleme işlemi için öncelikle gerekli olan veritabanı bağlantısını PDO ile yapalım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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 güncelleme işlemi";
 
} catch (PDOException $e) {
    die($e->getMessage());
}
 
$baglanti = null;
 
?>

Veritabanındaki verileri güncelleme işlemi için exec, query veya prepare metodları kullanılabilir.

Dışarıdan değer almayan veri güncelleme işlemlerinde exec veya query metodlarını kullanabiliriz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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("UPDATE kisiler SET kisi_adi = 'Celal', kisi_soyadi = 'Yurtcu' WHERE kisi_sira = 13");
 
    if ($sonuc > 0) {
        echo $sonuc . " veri güncellendi.";
    } else {
        echo " veri güncellenemedi.";
    }
 
} catch (PDOException $e) {
    die($e->getMessage());
}
 
$baglanti = null;
 
?>

veya

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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("UPDATE kisiler SET kisi_adi = 'Celal', kisi_soyadi = 'Yurtcu' WHERE kisi_sira = 13");
 
    if ($sorgu->rowCount() > 0) {
        echo $sorgu->rowCount() . " veri güncellendi.";
    } else {
        echo " veri güncellenemedi.";
    }
 
} catch (PDOException $e) {
    die($e->getMessage());
}
 
$baglanti = null;
 
?>

Veri güncelleme işleminin sonucunda PDOStatement($sorgu) sınıfındaki rowCount metodu güncellenen kayıt sayısını verir.

Veri güncelleme işlemine dışarıdan değer alarak koşullu veri güncelleme gibi bir işlem yapılacaksa eğer prepare metodunun kullanılması faydalı olacaktır.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
$sira = 1;
$adi = "Celal";
$soyadi = "Yurtcu";
 
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("UPDATE kisiler SET kisi_adi = ?, kisi_soyadi = ? WHERE kisi_sira = ?");
    $sorgu->bindParam(1, $adi, PDO::PARAM_STR);
    $sorgu->bindParam(2, $soyadi, PDO::PARAM_STR);
    $sorgu->bindParam(3, $sira, PDO::PARAM_INT);
    $sorgu->execute();
 
    if ($sorgu->rowCount() > 0) {
        echo $sorgu->rowCount() . " veri güncellendi.";
    } else {
        echo " veri güncellenemedi.";
    }
 
} catch (PDOException $e) {
    die($e->getMessage());
}
 
$baglanti = null;
 
?>

Ön hazırlı sorgunun çalıştırılmasından sonra PDOStatement($sorgu) sınıfındaki rowCount metodu güncellenen kayıt sayısını verir.

Güncellenen kayıt sayısını belirten rowCount metodu kullanılarak veri güncelleme işlemi kontrol edilebilir.

Veri güncelleme işlemindeki dikkat edilmesi gereken en önemli nokta UPDATE SQL komutuna uygun WHERE koşulunun yazılmasıdır.

Eğer herhangi bir WHERE koşulu belirtilmezse tablodaki tüm veriler toplu olarak güncellenir.