SevkiBilge

PHP’de PDO ile Güvenli Veri Çekme İşlemi Nasıl Yapılır?

KezibanKipcakMs
· 3 gün önce · 2 görüntülenme
Arkadaşlar merhaba, uzun süredir PHP ile uğraşıyorum ama veritabanı işlemlerinde hep eski usul mysql_* fonksiyonlarını kullanıyordum. Geçen gün bir projede güvenlik açığıyla karşılaştım ve mecburen PDO’ya geçiş yapmam gerekti. Gerçekten de PDO ile hazır ifadeler kullanmak çok daha güvenli, SQL enjeksiyon riskini neredeyse sıfıra indiriyor. Ama işin içine biraz girince kafam karıştı, özellikle bindParam ile bindValue arasındaki farkı tam olarak oturtamadım. Siz hangisini tercih ediyorsunuz? Ben genelde bindValue kullanıyorum ama performans açısından bindParam daha mı iyi oluyor? Bir de fetch modları var, mesela PDO::FETCH_ASSOC ile PDO::FETCH_OBJ arasında gidip geliyorum, siz hangi durumda neyi kullanıyorsunuz?

Asıl sormak istediğim şu: Diyelim ki bir kullanıcı girdisi alıyorum, bunu doğrudan WHERE koşulunda kullanacağım. PDO ile hazır ifade yazarken placeholder olarak isimli parametre mi kullanmalıyım yoksa soru işareti mi? İkisi arasında bir güvenlik farkı var mı? Ben isimli parametreleri daha okunabilir buluyorum ama bazı arkadaşlar soru işaretinin daha hızlı olduğunu söylüyor. Bir de hata yönetimi konusunda try-catch içinde PDOException yakalamak yeterli mi, yoksa ekstra bir kontrol mekanizması kurmak gerekir mi? Özellikle büyük veri çekimlerinde bağlantı kopmalarına karşı ne yapıyorsunuz?

Kendi deneyimimden örnek vereyim: Geçenlerde bir arama sayfası yaparken kullanıcıdan gelen veriyi direkt olarak sorguya eklemiştim, sonra bir arkadaşım uyardı ve PDO’ya geçtim. İşte o zaman anladım ki doğru kullanıldığında gerçekten sağlam oluyor. Ama şöyle bir sorun yaşadım: fetchAll ile çektiğim veriler bazen çok büyük oluyor, bellek tüketimi artıyor. Bunun için alternatif bir yöntem önerir misiniz? Mesela büyük sonuç kümelerinde satır satır işlemek daha mı mantıklı? Umarım bu konuda tecrübeli arkadaşlar fikirlerini paylaşır, çünkü kafamda hala bazı soru işaretleri var.
0 yanıt

Henüz yanıt bulunmuyor. İlk yanıtlayan siz olun!

Yanıt yazmak için giriş yapın.