Bir PHP uygulama hatalı veritabanı değerleri üzerinde hata işleme yapmalıdır?

5 Cevap php

Bu düşünün ... Ben 'current_round' başlıklı veritabanında bir alan var. Bu yalnızca 0,1,2,3 aralığında olabilir.

Uygulama mantığı sayesinde, 3 veya veritabanına 0'dan üzerinde bir sayı elde etmek mümkün değildir.

Hata değeri (yani aralık 0-3) hatalı olup olmadığını görmek için bir yerde orada kontrol edilmelidir? Ya da bu sadece gereksiz yükü nedir? Bir veritabanında değerleri kabul Tamam mı doğru biçimlendirilmiş / değişmekteydi vb (doğru / tüm kullanıcı girişini değerlendirmek sanatise varsayarak?)

5 Cevap

Ben genellikle veritabanındaki tüm verileri doğrulamak yok. Bunun yerine veritabanında kısıtlamaları uygulamak için çalışın. Senin durumunda, 0, 1, 2, 3 anlam bağlı olarak bir yabancı anahtar kısıtlaması ile bir arama tablosu kullanabilir ya da sadece sayısal değerler iseniz ben (sonraki DB satıcıdan farklıdır) bir denetim kısıtlaması kullanabilirsiniz.

Bu doğrudan erişim ve / veya giriş doğrulama sürecini paylaşan aynı DB kullanmak olmayabilir ama gelecekteki uygulamaları ile birileri tarafından DB yapılan değişikliklere karşı korunmasına yardımcı olur.

Eğer veritabanında sokulmadan önce doğrulama yerleştirmek için karar yerde bu şeyleri yakalamak nerede olduğunu.

Doğrulama işlemi tek bir yerde ve tek bir yerde yer almalıdır. Uygulama nasıl yapılandığını bağlı olarak:

  • Bu odaklı usul veya nesne mi?
  • Nesne yönelimli ise, o zaman bir Active Record desen, Ağ Geçidi desen veya veritabanı eşleme işlemek için Veri Mapper desen kullanıyorsunuz?
  • Eğer veritabanı soyutlama katmanı ayrıdır etki alanı nesneleri var mı?

Sonra uygulama bu mantığı yerleştirmek için nerede karar vermeniz gerekir.

Benim durumumda, etki alanı nesneleri aslında veritabanına ekleme ve güncelleme fonksiyonlarını yerine veri mappers ile doğrulama mantığını ve işlevlerini içerir. Ben hiç veritabanına bilgi kaydetmek için çalışmadan önce Yani, geçerli değerler olduğunu onaylayın.

Veritabanı sizin için bunu yapmak için alın. Çoğu gelişmiş DBMS Eğer kısıtlamalarını tanımlamak için izin (http://FreeDB2.com ücretsiz DB2 Express-C check out). Bu şekilde size veri anlamsal bütünlüğünü sağlamak için veritabanı alıyorsanız. Bu uygulama kodunda yapılan Başlarken başında çalışacaktır, ancak her zaman çeşitli nedenlerle çalışma duracaktır satır aşağı bulacaksınız. Ek uygulamalar veritabanına verileri doldurmak veya mevcut app için sürünen bir hata alabilirsiniz olabilir. En sık olur şey yeni insanlarla uygulama üzerinde çalışmak için olsun ve onlar yapmış olduğu kontrol aynı düzeyde gerçekleştirmek için başarısız olacak bir kod katacak.

Genel olarak, sen bekliyorsanız ne için değer veya türünü ya kontrol etmelisiniz. Ve uygun hareket. Sadece after gerektiği belki bazı kod 'yanlış' değeri ve nasıl şeyleri düzeltmek için ne yapacağını dışarı çalışma hakkında düşünmek tüm kontrolleri başarısız olur. Bu ne var gibi, ya doğru tip olması gereken bir giriş tipi ile, bir devlet değer ile geçerlidir.

Uygulama herhangi bir şans güncellemek / geçersiz bir değer eklemek için deneyin olsaydı kısıtlamaları veritabanında koymak gerekir, sadece istisnaları yakalamak için unutmayın