• 19-09-2020, 22:45:11
    #1
    Merhabalar. PDO ile veritabanında güncelleme işlemi yapıyorum. Fakat güncellenen veri aynıysa nasıl uyarı verdirebilirim?

    Mesela veritabanındaki veri 1 diyelim. Ben tekrar 1 diye güncelleme yapmak istediğimde hata vermesini istiyorum. Aksi taktirde sitem buga giriyor.
  • 19-09-2020, 22:46:43
    #2
    Select ile bakın if 1 ise zaten 1 diye uyarı verdirebilirsiniz.
  • 19-09-2020, 22:53:53
    #3
    En basit haliyle bu şekilde, çok farklı şekillerde de yapılabilir.
    <?php
    
    $yeniveri = $_POST["yeniveri"];
    
    $row = $db->query("SELECT * FROM tablo_adi WHERE veri='$yeniveri'")->rowCount();
    
    if($row > 0) {
        // HATA
    } else {
        // GUNCELLE
    }
  • 19-09-2020, 22:54:24
    #4
    Nasıl ya? Sizin sql de ya da kodlarda bir sıkıntı olmasın. Bende değerler aynı ise değişiklik yapmıyor otomatik olarak php 7.4 pdo son sürüm mariadb kurulu. PDO yerine basicdb sınıfını kullanın derim hem daha kolay.

    Sorunuza gelecek olursak select işlemi yaparken where kullanın eğer girilen değerlerle eşitse saten geri döndürüyor değilse döndürmüyor if ile kontrol eder ona göre update işlemi yaparsınız.
  • 19-09-2020, 22:55:17
    #5
    PlatinYum adlı üyeden alıntı: mesajı görüntüle
    Merhabalar. PDO ile veritabanında güncelleme işlemi yapıyorum. Fakat güncellenen veri aynıysa nasıl uyarı verdirebilirim?

    Mesela veritabanındaki veri 1 diyelim. Ben tekrar 1 diye güncelleme yapmak istediğimde hata vermesini istiyorum. Aksi taktirde sitem buga giriyor.

    öncelikle gelen verinin id sini alırsınız o idye göre veriyi bulursunuz
    
    $id   = get('id');
    $bul = $db->prepare("SELECT * FROM veriler WHERE id=:id");
    $bul->execute([':id' => $id]);
    if($bul->rowCount()){
    
      $row = $bul->fetch(PDO::FETCH_ASSOC);
    if($row['baslik']  == $_POST['baslik']){   //deneme amaçlı sütun yazılmıştır
       echo "formdan gelen veri ile veritabanındaki veri aynıdır";
    }else{
    $guncelle = $db->prepare("UPDATE veriler SET baslik=:b WHERE id=:id");
    $guncelle->execute([':b'=>$baslik,':id'=>$id]);
    if($guncelle){
    echo "başarılı";
    }
    
    }
    
    }