• 25-10-2020, 12:42:14
    #1
    Merhaba Arkadaşlar
    PHP PDO da prepare verileri çekemiyorum, query ile verileri çekebiliyorum, kodlarda yaptığım her hangi bir hatamı var, mesela ikisindede Function dosyasında global $db; yi kullanmasam veriler gelmiyor, prepare ile query arasındaki fark hangisi daha güvenli, bu konuda yardımcı olabilirmisiniz

    bu şekilde verileri çekebiliyorum
    $veri=$db->query("Select * From bilgiler");


    bu şekilde verileri çekemiyorum
    $veri=$db->prepare("Select * From bilgiler");
  • 25-10-2020, 12:47:02
    #2
    prepare daha güvenli.
    $db->prepare("Select * From bilgiler");
    bu yanlış bir prepare kullanımı.
    bkz:https://www.php.net/manual/tr/pdo.prepare.php
  • 25-10-2020, 12:52:30
    #3
    prepare edildiğinde fonksiyonu execute etmeniz gerekir

    $p = $db->prepare("Select * From bilgiler");
    $p->execute();

    sistem içinde dışarıdan veri almaksızın parametre gönderilerek veri alımı
    $p = $db->prepare("Select * From bilgiler WHERE username = :un");
    $p->execute(Array("un"=>"test"));

    dışarıdan gelen verileri güvenli içeri almak ise
    $username = $_GET["username"];
    $p = $db->prepare("Select * From bilgiler WHERE username = :un");
    $p->bindParam(':un', $username, PDO::PARAM_STR );
    $p->execute();

    PDO::PARAM_STR,PDO::PARAM_INT gibi parametrelerle alınacak veriyi spesifik hale getirip güvenliği sınırlayabilirsiniz.
  • 25-10-2020, 12:53:49
    #4
    Hocam kısa bir örnek verebilirmisin, birde her açtığım function da neden global $db; kullanmak zorunda oluyorum
  • 25-10-2020, 13:00:13
    #5
    emlak21 adlı üyeden alıntı: mesajı görüntüle
    Hocam kısa bir örnek verebilirmisin, birde her açtığım function da neden global $db; kullanmak zorunda oluyorum
    fonksiyon içerisinde kullanılan değişkenler o scope içerisinde tanımlı olmak zorundadır.
    Sizin herhangi bir yerde tanımlamış olduğunuz değişken belli bir scope aralığı taşımıyor (yani global olarak erişilebilir oluyor) . Değişkeni o fonksiyon içerisinde kullanabilmek içinse değişkeni yükseltmek gerekiyor bunuda ister $GLOBALS["db"] ister global $db ile olarak o fonksiyonun içerisinde kullanılabilir kılıyoruz.