Her zaman mysql sorguları sona "ya da öl?" Should

6 Cevap

Bazı derslerde örnek sorgular DAİMA ile sona ermektedir:

or die(mysql_error());  

Bazen bunu yapmak istersiniz neden ben görebiliyorum, ama onlar bile gerçekten bir sorun neden olmamalıdır sorguları için kullanabilirsiniz. O zaman iyi bir uygulama kullanmak için, ya da sadece öğrenmek gibi hata ayıklamaya yardımcı olmak için bunu yapıyor mi?

6 Cevap

NO.

Avoid tüm maliyet!

  1. Bu bir son kullanıcıya göstermek için korkunç bir mesajdır
  2. mysql_error bilgileri açığa olabilir size verilecek istemiyorum
  3. Hatayı işlemek için hiçbir yolu yoktur, yani döner.

Işlemlerin bir veritabanı düşünün - müşteri para gönderir, böylece iki tablo (iki sorgu) değiştirmek zorunda.

First one transfers money from X to Y and succeeds. The second one has to subtract Y from X fails.

Sen işlem dönmek için bir yol var ve hata günlüğe değildir. Paranın nereye gittiğini etkin kullanıcı Y sol mutlu ve X karıştırmayın yapma ...

Sorgular için işleme mantıklı bir hata kullanın - sizin için işlemek veya ORM kullanacak bir sınıf yapmak ya.

Bu "bir sorun olmamalı" demek ne bağlıdır.

Eğer "iyi başarısız olmaz" demek durumunda veritabanı sunucusu çevrimdışı giderse ne olur?

Ne demek sadece eğer or die orada olmaması düşünmelisiniz "Bu başarısız olmadığı önemli değil veya etmez, komut bir sorun olmadan çalışmaya devam edebilirsiniz."

Kelimesini burada kötü "değil". Bir sorun olmamalıdır sorgular hala dış faktörlerden etkilenebilir, örneğin aşağı gidiyor veritabanına bağlantısı.

ama onlar bile gerçekten bir sorun neden olmamalıdır sorguları için kullanabilirsiniz

Web sunucusu ve veritabanı sunucusu arasında ağ üzerinden düşerse bile basit SELECT * FROM FOO bir sorun neden olabilir. Veritabanları gibi dış sistemlerle uğraşırken, gerçekten hiç bir şey 'güvenli' olduğunu kabul edemez çünkü iyi bir uygulamadır.

Üretim kodu, hataları işlemek için die() kullanmak istemiyor olabilir - belki de onunla başa çıkmak için bazı özel kod çalıştırabilir. Her neyse, kesinlikle bir yol veya başka bir hatayı işlemek gerekir, ve die() başlamak için iyi bir yoldur.

Sen mutlaka gerekmez

or die()

Ancak should hata işleme sistemi bir tür var. Henüz yerde bir tane yoksa, benim sorguları bile basit olanları eklemek istiyorum.

EDIT: "o" ile, açıklığa kavuşturmak için ben or die () ifadesi anlamına gelir.

Ben sizin sayfaların üstüne doğru kullanmak incitmez düşünüyordum nereye veritabanı bağlantı bilgileri, olması sadece veritabanına bağlanmak için çalışırken kullanmak istiyorsunuz demektir hiç.

Ama neden bize her sorguda gerçekleştirmek! Hayır diğer hatalar meydana gerektiğini biliyorsanız bunu Başına Page kez daha kullanmaktan kaçının olamazdı neden veritabanına bağlı Açıkçası eğer daha sonra ben görmek olmaz!