Hatalar ve Ele Alınışları

PDO eklentisi uygulama geliştirme tarzınıza uygun olarak üç farklı hata işleme yönteminden birini seçmenize olanak verir.

  • PDO::ERRMODE_SILENT

    Bu öntanımlı kiptir. PDO, gerek veritabanı gerekse deyim nesneleri üzerinde PDO::errorCode() ve PDO::errorInfo() işlevlerini kullanarak hata kodunu sizin için hazır hale getirir. Eğer hata bir deyim nesnesiyle ilgili bir işlev veya yöntem çağrısından kaynaklanmışsa bu nesne üzerinde PDOStatement::errorCode() veya PDOStatement::errorInfo() işlevini kendiniz çağırmalısınız. Eğer hata bir veritabanı nesnesiyle ilgili bir işlev veya yöntem çağrısından kaynaklanmışsa bu işlevleri bu kez veritabanı nesnesi üzerinde çağırmalısınız.

  • PDO::ERRMODE_WARNING

    Hata kodu ayarlarına ek olarak, PDO geleneksel bir E_WARNING uyarısı da verir. Bu kip, hata ayıklama ve denemeler sırasında uygulama akışının kesilmeden oluşan sorunları görmek için kullanışlıdır.

  • PDO::ERRMODE_EXCEPTION

    Hata kodu ayarlarına ek olarak, PDO bir PDOException istisnası oluşturup hata kodunu ve iletisini nesnenin özelliklerine yerleştirir. Bu kip de hata ayıklama sırasında uygulama akışının kesilmeden oluşan sorunları çabucak görüp müdahale etmek için kullanışlıdır. (Dikkat: Eğer istisna betiğin sonlanmasına sebep olursa veri hareketleri (transactions) özdevinimli olarak başa sarılır.)

    Bu kip bir istisna nesnesi ile çalıştığından, hataların, her veritabanı çağrısında dönen değere bakmaktan, sessiz kipi kullanmaktan ve geleneksel PHP tarzı uyarılardan daha iyi ve daha kolay işleme sokulmasını sağlar.

    PHP'deki istisna nesneleri hakkında bilgi edinmek için İstisnalar bölümüne bakınız.

PDO SQL-92 SQLSTATE hata kodu dizgelerinin kulanımını standartlaştırmıştır; her PDO sürücüsü kendi kodunu SQLSTATE kodlarına uydurmakla yükümlüdür. PDO::errorCode() yöntemi tek bir SQLSTATE kodu döndürür. Bir hata ile ilgili daha özel bilgiye gerek duyulursa, SQLSTATE kodundan başka sürücüye özgü hata kodunu ve iletisini içeren bir dizi döndüren PDO::errorInfo() yöntemi kullanılabilir.