PHP MySQL Veri Güncelleme

PHP ile MySQL veritabanındaki/tablosundaki veri güncelleme-değiştirme-düzenleme işlemi ile ilgili bilgiler yer almaktadır.

PHP ile MySQL veri güncelleme işlemi için öncelikle PHP MySQL Bağlantısı ile bağlantı yapılıp PHP MySQL Sorgulama ile uygun SQL komutunun yazılması yeterli olacaktır.

PHP ile MySQL veri güncelleme işlemi PHP MySQL Veri Silme işlemine benzer şekilde yapılır.

MySQL ile veri güncelleme işlemi UPDATE SQL komutu ile yapılır.

UPDATE tablo_adi SET sutun1 = yeni_deger, sutun2 = yeni_deger WHERE sutun_adi = guncellenecek_deger 

NOT: Veri güncelleme işleminde WHERE kullanılmazsa tablodaki tüm veriler güncellenir.

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

<?php

$baglanti = new mysqli("localhost", "root", "", "kisi");

if ($baglanti->connect_errno > 0) {
    die("<b>Bağlantı Hatası:</b> " . $baglanti->connect_error);
}

$baglanti->set_charset("utf8");

echo "Veri güncelleme işlemi";

$baglanti->close();

?>

Veri güncelleme işlemi için query veya prepare metodunu kullanabiliriz.

Dışarıdan değer almayan veri güncelleme işlemi için query metodunu kullanabiliriz.

<?php

$baglanti = new mysqli("localhost", "root", "", "kisi");

if ($baglanti->connect_errno > 0) {
    die("<b>Bağlantı Hatası:</b> " . $baglanti->connect_error);
}

$baglanti->set_charset("utf8");

$sorgu = $baglanti->query("UPDATE kisiler SET kisi_adi = 'Yusuf Sefa', kisi_soyadi = 'SEZER' WHERE kisi_sira = 4");

if ($baglanti->errno > 0) {
    die("<b>Sorgu Hatası:</b> " . $baglanti->error);
}

if ($baglanti->affected_rows > 0) {
    echo $baglanti->affected_rows . " kayıt güncellendi.";
} else {
    echo "Herhangi bir kayıt güncellenemedi.";
}

$baglanti->close();

?>

Veri güncelleme işlemi sonucunda mysqli sınıfındaki affected_rows özelliği güncellenen kayıt sayısını alır.

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

<?php

$sira = 1;
$adi = "Yusuf Sefa";
$soyadi = "SEZER";

$baglanti = new mysqli("localhost", "root", "", "kisi");

if ($baglanti->connect_errno > 0) {
    die("<b>Bağlantı Hatası:</b> " . $baglanti->connect_error);
}

$baglanti->set_charset("utf8");

$sorgu = $baglanti->prepare("UPDATE kisiler SET kisi_adi = ?, kisi_soyadi = ? WHERE kisi_sira = ?");

if ($baglanti->errno > 0) {
    die("<b>Sorgu Hatası:</b> " . $baglanti->error);
}

$sorgu->bind_param("ssi", $adi, $soyadi, $sira);
$sorgu->execute();

if ($sorgu->affected_rows > 0) {
    echo $sorgu->affected_rows . " kayıt güncellendi.";
} else {
    echo "Herhangi bir kayıt güncellenemedi.";
}

$sorgu->close();
$baglanti->close();

?>

Ön hazırlı sorgunun çalıştırılması sonucunda mysqli_stmt($sorgu) sınıfı içindeki affected_rows özelliği güncellenen kayıt sayısını alır.

Güncellenen kayıt sayısını belirten affected_rows özelliği kullanılarak veri güncelleme işlemi kontrol edilebilir.

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

Herhangi bir WHERE koşulu belirtilmediğinde tablodaki veriler toplu/çoklu olarak güncellenecektir.

PHP MySQL Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Bunlar da hoşunuza gidebilir...

3 Cevaplar

  1. Yigit dedi ki:

    Hocam selamlar where komutunu kullandığım halde toplu olarak güncelleniyorlar kafayı yiyeceğim.
    Kodlar:
    <?php
    include 'baglan.php';
    putenv("TZ=Europe/Istanbul");

    if(isset($_POST['ayarkaydet'])) {

    $id=0;

    $ayarkaydet=mysql_query("update ayarlar set ayar_title=
    '".$_POST['ayar_title']."',
    ayar_blogad='".$_POST['ayar_blogad']."',
    yazi1baslik='".$_POST['yazi1baslik']."',
    yazi2baslik='".$_POST['yazi2baslik']."',
    yazi3baslik='".$_POST['yazi3baslik']."',
    ayar_slogan='".$_POST['ayar_slogan']."',
    ayar_slogan='".$_POST['ayar_altslogan']."',
    ayar_description='".$_POST['ayar_description']."',
    ayar_misyon='".$_POST['ayar_misyon']."',
    ayar_vizyon='".$_POST['ayar_vizyon']."',
    ayar_keywords='".$_POST['ayar_keywords']."',
    ayar_telefon='".$_POST['ayar_telefon']."',
    ayar_facebook='".$_POST['ayar_facebook']."'
    ,ayar_twitter='".$_POST['ayar_twitter']."',
    ayar_footer='".$_POST['ayar_footer']."',
    ayar_adres='".$_POST['ayar_adres']."',
    ayar_mail='".$_POST['ayar_mail']."',
    ayar_fax='".$_POST['ayar_fax']."' where ayar_id='$id'");

    if(mysql_affected_rows())

    {

    header("Location:../ayarlar.php?durum=ok");

    }

    else {

    header("Location:../ayarlar.php?durum=no");

    }

    }

    • Yusuf SEZER dedi ki:

      Öncelikle yazdığınız kodlar çok karmaşık, kodlarınızı özhazırlıklı sorgu veya prepared statement olarak adlandırılan yapıya göre yazmanız bu tarz oluşabilecek sorunları kolayca bulmada faydalı olacak ve SQL injection gibi sorunların önüne geçecektir.

      Kodlarınızdaki hatayı bulmak için yazmış olduğunuz sql komutunu bir değişkene yazıp daha sonra bu değişkeni ekrana yazdırarak sql komutunu öğrenebilir ve hatayı bulabilirsiniz.

      Büyük olasılık sql komutunuzda fazladan bir tek tırnak işareti var. Tek tırnak işareti SQL komutlarında yorum olarak alğılandığından where komutu geçersiz kalıyor.

  2. ozan basaran dedi ki:

    sizlerden cok sey ogrendim..inanin isime o kadar yariyacak ki bu bilgileriniz..verdiginiz emek icin onunuzde saygi ile egiliyor, is hayatinizda basarilar diliyorum.

Bir cevap yazın

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