• 18-01-2022, 10:14:45
    #1
    Arkadaşlar MSSQL veri tabanından PDO ile verileri alıp form oluşturduğum bir sayfam var.
    Bir çok tablodan bir çok farklı veriyi tek sayfada çekiyorum ve form içine yazıyorum.
    Tek bir değerden yola çıkarak diğer tüm değerler birbirine bağlı olarak geliyor.
    Örnek olarak sipariş numarasını bir form ile aynı sayfa içine post ediyorum.
        <form method="POST" action="">
            <input type="text" id="siparis-ara" name="siparis-no" autocomplete="off" placeholder="Sipariş No" >
            <button type="submit" ></button>
        </form>
    ve form içerisinde örnekteki gibi gelen veriyi yazdırıp karşılıyorum.

    <?php
        $siparis = $db->prepare("SELECT * from ORDERS where RECEIPTNO = '{$_POST['siparis-no']}'");
        $siparis->execute();
        $siparisigetir=$siparis->fetch(PDO::FETCH_ASSOC);
        //        echo "<pre>";
        //            print_r($siparisigetir);
        //        echo "</pre>";
    ?>
    Daha sonra bu sorgudan gelen bir değişkeni, başka bir sorgu içerisinde kullanıyorum

    <?php
        $cari = $db->prepare("SELECT * from ACT where ACTID = '{$siparisigetir['ACTID']}'");
        $cari->execute();
        $cariyigetir=$cari->fetch(PDO::FETCH_ASSOC);
        //        echo "<pre>";
        //            print_r($cariyigetir);
        //        echo "</pre>";
    ?>
    Ve bunun gibi sayfa içerisinde onlarca sorgu var. Belki 30 belki 40.
    Tamam sorgular çalışıyor istediğimi veriyor fakat sorgu süresi bazen o kadar uzuyor ki 10dk boyunca yanıt gelmiyor.
    Çalışmaya başlayınca tıkır tıkır tabanca gibi çalışıyor. Hiç sorun yok. Aynı çalışan sayfa, sayfayı yenileyince bir kilitleniyor, bir daha beklee gelsin.
    Aynı veri tabanını kullanan bir ERP programı var ve bu süre zarfında o da kilitleniyor.

    Sizce hatayı nerede yapıyorum bu kilitlenmeyi bana yaşatan nedir? Bilgi verebilir misiniz.
  • 18-01-2022, 10:20:42
    #2
    TuncerSK adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar MSSQL veri tabanından PDO ile verileri alıp form oluşturduğum bir sayfam var.
    Bir çok tablodan bir çok farklı veriyi tek sayfada çekiyorum ve form içine yazıyorum.
    Tek bir değerden yola çıkarak diğer tüm değerler birbirine bağlı olarak geliyor.
    Örnek olarak sipariş numarasını bir form ile aynı sayfa içine post ediyorum.
        <form method="POST" action="">
            <input type="text" id="siparis-ara" name="siparis-no" autocomplete="off" placeholder="Sipariş No" >
            <button type="submit" ></button>
        </form>
    ve form içerisinde örnekteki gibi gelen veriyi yazdırıp karşılıyorum.

    <?php
        $siparis = $db->prepare("SELECT * from ORDERS where RECEIPTNO = '{$_POST['siparis-no']}'");
        $siparis->execute();
        $siparisigetir=$siparis->fetch(PDO::FETCH_ASSOC);
        //        echo "<pre>";
        //            print_r($siparisigetir);
        //        echo "</pre>";
    ?>
    Daha sonra bu sorgudan gelen bir değişkeni, başka bir sorgu içerisinde kullanıyorum

    <?php
        $cari = $db->prepare("SELECT * from ACT where ACTID = '{$siparisigetir['ACTID']}'");
        $cari->execute();
        $cariyigetir=$cari->fetch(PDO::FETCH_ASSOC);
        //        echo "<pre>";
        //            print_r($cariyigetir);
        //        echo "</pre>";
    ?>
    Ve bunun gibi sayfa içerisinde onlarca sorgu var. Belki 30 belki 40.
    Tamam sorgular çalışıyor istediğimi veriyor fakat sorgu süresi bazen o kadar uzuyor ki 10dk boyunca yanıt gelmiyor.
    Çalışmaya başlayınca tıkır tıkır tabanca gibi çalışıyor. Hiç sorun yok. Aynı çalışan sayfa, sayfayı yenileyince bir kilitleniyor, bir daha beklee gelsin.
    Aynı veri tabanını kullanan bir ERP programı var ve bu süre zarfında o da kilitleniyor.

    Sizce hatayı nerede yapıyorum bu kilitlenmeyi bana yaşatan nedir? Bilgi verebilir misiniz.
    JOIN kullanımına bak hocam öncelikle tek sorguda da istediğin her şeyi alabilirsin gibi duruyor. ayırca birbirine bağladığın kolonlar üzerinde INDEX metodu uygula. SELECT işlemlerinde performans elde edersin. her kolona gerekli değilse INDEX verme INSERT ve UPDATE işlemlerini yavaşlatırsın.

    Eğer çok fazla veri varsa pagination kullan. dbdeki tüm veriyi aynı anda çekmeye çalışma.
  • 18-01-2022, 12:00:40
    #3
    Arkadaşlar form ile bir sorgu yapmazsam değişkenler boş olan şekliyle veri almaya çalışıyor ve hata kodu döndürüyor.

    Hata kodu şu şekilde:
    PHP Notice: Trying to access array offset on value of type bool ....

    Form değeri post edilmediği sürece sorgu yapmaya çalışmasını nasıl engellerim?