v2.5.2
Giriş yap

prepare & query

wwx
363 defa görüntülendi

Merhabalar ürün detay sayfam için normalde

$query = $db->prepare("SELECT * FROM urun where sef=:sef LIMIT 1");
$urun  = $query->execute(array(":sef"=>$_GET['sef']));
$urun  = $query->fetch(PDO::FETCH_ASSOC);

Bunu kullanıyordum ama bu aralar daha kısa olması için

$urun = $db->query("SELECT * FROM urun WHERE sef ='{$_GET['sef']}' LIMIT 1")->fetch(PDO::FETCH_ASSOC); 
if(!$urun){
  header("Location:../404");
}

Bunu kullanmaya başladım arasında ki fark nedir prepare daha güvenli deniliyor nedeni nedir vs bilgi verebilirmisiniz

Cevap yaz
Cevaplar (2)
jct
801 gün önce

Merak ettiğimden test etmek istedim, toplam 1279 kayıt olan bir tabloda sonuçlar aşağıdaki gibi çıktı. Tabiki @abdullahx dediği ölümcül bir uyarı, "Eğer bir sql sorgusunda kullanıcıdan gelen bir değişken kullanacaksanız prepare ile, siz kendiniz arka planda kullanıcının müdahalesi olmadan bir sql sorgusu yazacaksanız query ile yazın."

Aradaki fark : 3,8 kat

Sorgu Süresi : 0.00263 Saniye

$Query = $SQLConnect -> GetSQL() -> prepare("SELECT * FROM payment_payment WHERE Payment_Status = ?");
$Query -> execute([1]);
$Query = $Query -> fetchAll();

Sorgu Süresi : 0.00067 Saniye

$Query = $SQLConnect -> GetSQL() -> query("SELECT * FROM payment_payment WHERE Payment_Status = 1") -> fetchAll();
abdullahx
808 gün önce

SQL Injection diye aratırsan sebebini daha iyi anlarsın.
Olay şudur. Eğer bir sql sorgusunda kullanıcıdan gelen bir değişken kullanacaksanız prepare ile, siz kendiniz arka planda kullanıcının müdahalesi olmadan bir sql sorgusu yazacaksanız query ile yazın.