SevkiBilge

PDO ile prepared statement kullanırken karşılaştığım beklenmedik hata

HayrettinSahin
· 3 gün önce · 1 görüntülenme
Arkadaşlar merhaba, bugün başıma gelen ve epey uğraştıran bir PDO hatasını sizlerle paylaşmak istiyorum. Normalde PDO ile prepared statement kullanmak, SQL enjeksiyonuna karşı en güvenli yöntemlerden biri olarak bilinir. Ancak ben dün bir sorguda inanılmaz bir sorunla karşılaştım.

Şöyle ki, bir kullanıcı listesi çekmek için basit bir SELECT sorgusu yazdım. Sorguda WHERE koşulunda iki farklı değişken kullanıyordum, birisi kullanıcı ID'si, diğeri de kayıt tarihi aralığıydı. Her şey normal görünüyordu, bindParam ile parametreleri bağladım, execute çalıştırdım. Ama sonuçlar tamamen yanlış geliyordu. Hata mesajı da vermiyordu üstelik. Sorguyu direkt veritabanında denediğimde doğru çalışıyor, PDO ile çağırınca saçmalıyordu.

Uzun uğraşlar sonucunda fark ettim ki, bindParam kullanırken parametreleri yanlış veri tipinde tanımlamışım. Özellikle tarih alanını string olarak gönderiyordum ama PDO::PARAM_STR yerine yanlışlıkla PARAM_INT kullanmıştım. Bu tip uyuşmazlığı PDO'da her zaman hata vermiyor, bazen sessizce yanlış sonuç döndürüyor. Sizce bu tür tip uyumsuzluklarını yakalamak için ek bir kontrol mekanizması kurmak gerekli mi? Yoksa genelde herkes bindValue ile çalışmayı mı tercih ediyor? Ayrıca sizin başınıza buna benzer bir durum geldi mi, nasıl çözdünüz?
0 yanıt

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

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