SevkiBilge

PHP'de PDO ile Prepared Statement Kullanırken Karşılaştığım Bir Sorun

SevilKilicTech
· 2 gün önce · 0 görüntülenme
Arkadaşlar merhaba, son günlerde bir projede PDO ile prepared statement kullanırken ilginç bir sorunla karşılaştım ve sizlerle paylaşmak istedim. Normalde PDO'nun güvenli sorgu yapısına tamamen güveniyordum ama bu sefer bir türlü çözemediğim bir durum oldu. Şöyle ki, bir kullanıcıdan gelen veriyi bindParam ile bağlayıp sorgumu çalıştırıyorum, ama bazı durumlarda sorgu hiç hata vermeden boş sonuç döndürüyor. İlginç olan şu ki, aynı sorguyu elle yazdığımda (hardcoded) çalışıyor, ama PDO ile bind ettiğimde boş geliyor. Özellikle string değerlerde UTF-8 karakter sorunu olabilir mi diye düşünüyorum, çünkü Türkçe karakter içeren bir arama yapıyorum.

Sorgum şu şekilde: "SELECT * FROM kullanicilar WHERE kullanici_adi = :kullanici" ve bindParam ile bağlıyorum. Ama ":kullanici" değerini direkt sorguya yazdığımda çalışıyor. PDO'nun charset ayarını UTF-8 olarak belirledim, hata ayıklama modunda hata mesajı da alamıyorum. Sizce sorun nerede olabilir? bindValue ile bindParam arasında bu tür bir fark görüyor musunuz? Ya da PDO'nun varsayılan olarak string kaçışlarında farklı bir davranışı mı var?

Ayrıca bir arkadaşım, "prepare" işleminden sonra sorguyu debug etmek için bir yöntem biliyor musunuz diye sordu. Ben genelde $stmt->debugDumpParams() kullanıyorum ama çıktısı bana tam olarak neyin yanlış gittiğini göstermiyor. Belki de PDO'nun sürümüyle ilgili bir uyumsuzluk veya sunucu ayarlarından kaynaklanıyordur. Son olarak, bu tür durumlarda alternatif olarak mysqli mi tercih etmeliyim? Çünkü PDO'nun bu esnekliği bazen kafa karıştırıcı olabiliyor. Deneyimlerinizi ve çözüm önerilerinizi merakla bekliyorum. Teşekkürler.
0 yanıt

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

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