• 24-05-2021, 11:06:52
    #1
    Merhaba,
    php ile veritabanında formdan girilen verinin zaten var olup olmadığını sorgulamam gerekiyor. PDO'da nasıl yapabileceğimi bilmiyorum daha önce ki versiyonlarda sorguyu yazıp num_rows ile satır sayısını çekiyordum fakat pdo da bunu gerçekleştiremedim. Nasıl yapabilirim yardımcı olursanız sevinirim.
  • 24-05-2021, 11:08:55
    #2
    oguzhanre adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    php ile veritabanında formdan girilen verinin zaten var olup olmadığını sorgulamam gerekiyor. PDO'da nasıl yapabileceğimi bilmiyorum daha önce ki versiyonlarda sorguyu yazıp num_rows ile satır sayısını çekiyordum fakat pdo da bunu gerçekleştiremedim. Nasıl yapabilirim yardımcı olursanız sevinirim.
    $veri=$db->query("SELECT * from xxx where xx='xxx' ");
    PDO tarafında satır sayısını $veri->rowCount(); şeklinde alabilirsiniz
  • 24-05-2021, 11:30:00
    #3
    Dönüşünüz için teşekkür ederim fakat bir örnek belirtebilir misiniz?

    Veri eklerken post edilen kaydın zaten var olması halinde uyarı vermesini aksi halde insert işlemini gerçekleştirmesini istiyorum. Aslında tek sorunum var olması halinde uyarı gelmesi.
  • 24-05-2021, 11:34:01
    #4
    $query = $db->query("SELECT * FROM sorgu devamı")->fetch(PDO::FETCH_ASSOC);
    if ( $query ){
    //var zaten
    } else {
    //insert işlemi
    }
  • 24-05-2021, 11:50:35
    #5
    Merhaba aşağıda ki hatayı alıyorum:
    Fatal error: Call to a member function fetch() on boolean in

    if(isset($_POST['envKatEkle'])) {
         $katAd = $_POST['katAd'];
         $dataKontrol = $db -> query("SELECT * FROM kategori WHERE kat_ad=$katAd")->fetch(PDO::FETCH_ASSOC);
         if($dataKontrol)    {
             header("location:../sayfa.php?durum=ok");
             }else {
             header("location:../sayfa.php?durum=hata")
        }
            
     }
    Nedenini çözemedim bir türlü.
  • 24-05-2021, 12:37:25
    #6
    oguzhanre adlı üyeden alıntı: mesajı görüntüle
    Merhaba aşağıda ki hatayı alıyorum:
    Fatal error: Call to a member function fetch() on boolean in

    if(isset($_POST['envKatEkle'])) {
         $katAd = $_POST['katAd'];
         $dataKontrol = $db -> query("SELECT * FROM kategori WHERE kat_ad=$katAd")->fetch(PDO::FETCH_ASSOC);
         if($dataKontrol)    {
             header("location:../sayfa.php?durum=ok");
             }else {
             header("location:../sayfa.php?durum=hata")
        }
            
     }
    Nedenini çözemedim bir türlü.
    Kat _ad ın yanına string yazman lazım tırnak işaretli onlarla uğraşmamak için:
    query yerine prepare kullan fetch assoc yerine row count kullan ekstra olarak bunlarla uğraşmak istemiyorsan mysql tablondan benzersiz olmasını istediğin sütunu uniq yap insert hata vermezse eklemiştir verirse dönen hataya bak ona göre işle
  • 24-05-2021, 13:00:29
    #7
    Burda ekleme yapmadan yönlendirme yapmışsın ayrıca saymak yerine veri almaya çalışmışsın


    $katAd = $_POST['katAd'];
    $dataKontrol = $db -> query("SELECT * FROM kategori WHERE kat_ad=$katAd");
    if($dataKontrol->rowCount() > 0) {
    echo "bu kategori var";//header("location:../sayfa.php?durum=ok");
    }else {
    Echo "burda insert işlemini yap";//header("location:../sayfa.php?durum=hata")
    }

    }
  • 24-05-2021, 13:10:59
    #8
    WRaNGLeR adlı üyeden alıntı: mesajı görüntüle
    Burda ekleme yapmadan yönlendirme yapmışsın ayrıca saymak yerine veri almaya çalışmışsın


    $katAd = $_POST['katAd'];
    $dataKontrol = $db -> query("SELECT * FROM kategori WHERE kat_ad=$katAd");
    if($dataKontrol->rowCount() > 0) {
    echo "bu kategori var";//header("location:../sayfa.php?durum=ok");
    }else {
    Echo "burda insert işlemini yap";//header("location:../sayfa.php?durum=hata")
    }

    }
    Aslında kodlarımda ekleme var fakat koşul sağlandığında çalışacağı için buraya yazma gereği duymadım. Yazdığınız kodu kendime göre düzenledim fakat hata verdi.


    Sinemium adlı üyeden alıntı: mesajı görüntüle
    Kat _ad ın yanına string yazman lazım tırnak işaretli onlarla uğraşmamak için:
    query yerine prepare kullan fetch assoc yerine row count kullan ekstra olarak bunlarla uğraşmak istemiyorsan mysql tablondan benzersiz olmasını istediğin sütunu uniq yap insert hata vermezse eklemiştir verirse dönen hataya bak ona göre işle
    Cevabınız için çok teşekkür ederim, belirttiğiniz üzere sorgu içerisinde ki değişkeni string olarak gösterdiğimde sorun çözüldü. Bu işlemi veritabanında uniq yaparak çözebileceğimi belirttiğiniz için teşekkür ederim onu da deneyeceğim.

    Saygılarımla