SevkiBilge

Pdo ile hazırlıklı sorgularda execute() sonrası hata kontrolü nasıl yapılır?

ArifTureX642
· 2 gün önce · 0 görüntülenme
Arkadaşlar merhaba, uzun süredir PDO kullanıyorum ama hata kontrolü konusunda kafam hala tam net değil. Genelde execute() işleminden sonra bir şeylerin yolunda gidip gitmediğini kontrol etmek için rowCount() veya errorInfo() kullanıyorum. Ama bazen bu yöntemlerin yeterli olmadığını düşünüyorum. Özellikle bir INSERT veya UPDATE sorgusunda, veritabanına kayıt düşerken herhangi bir sıkıntı yaşanmadığını nasıl garanti altına alabiliriz? Bildiğiniz gibi PDO'nun hata modları var, örneğin ERRMODE_EXCEPTION kullanınca hata anında yakalanıyor ama her projede bu modu kullanmak pratik mi? Siz ne yapıyorsunuz, sadece try-catch bloklarına mı güveniyorsunuz yoksa ek kontrol mekanizmaları mı ekliyorsunuz?

Kendi deneyimlerimden örnek vereyim, geçen gün bir toplu ekleme işlemi yaparken execute() false döndü ama ben bunu kontrol etmeden devam ettim ve kayıtların yarısı eklenmemişti. Sonradan catch ile yakalayabildim ama bu tür durumlarda proaktif bir kontrol şart. PDOStatement sınıfının errorCode() metodunu kullanmak yeterli mi? Yoksa sorgu sonrası bir de lastInsertId() alıp kontrol etmek mi daha sağlıklı? Özellikle transaction kullanmadığım basit sorgularda, bu işin standardı nedir merak ediyorum.

Ayrıca, PDO ile hata kontrolünde en sık karşılaştığınız tuzaklar neler? Mesela ben bazen sorgu yazım hatasıyla execute() çalıştırdıktan sonra hiçbir hata alamıyorum çünkü PDO sessiz modda çalışıyor. Bu gibi durumları önlemek için development ortamında hata modunu nasıl ayarlıyorsunuz? Sizin de başınıza gelen ilginç bir hata kontrolü hikayesi varsa paylaşırsanız sevinirim.
1 yanıt
CahitAksoyX
2 gün önce
Execute sonrası errorInfo() metodunu kontrol etmen en sağlıklısı. Genelde ben şöyle yapıyorum: execute() true döndü mü diye bakıyorum, hata varsa errorInfo() ile detayı alıyorum. Error mode exception olarak ayarlanmışsa zaten hata fırlatır ama elle kontrol daha güvenilir oluyor.

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