PHP: die / çıkış birden komutlar

5 Cevap php

Bir hata verir ben onu 2 şeyler yapmak istiyorum.

  1. echo nl2br ($ qVraagOp);
  2. mysql_error ();

bu yüzden thougth:

$rVraagOp = mysql_query( $qVraagOp ) or die( echo nl2br ($ qVraagOp); mysql_error (); );

I can write a function that does these two things and then call that but that a bit redundant. is there a other way?

Matthy

5 Cevap

Ben böyle bir fonksiyon yazmak istiyorum:

function PrintDebug($DebugData)
{ 
  if($DebugMode == 1)
  { 
      return nl2br($DebugData) . "<br />" . mysql_error();
  }
  else
  {
      return "Ops stuff got messed up!!!";
  }
} 

Ve ben gibi kullanabilirsiniz

$rVraagOp = mysql_query( $qVraagOp ) or die(PrintDebug($qVraagOp));

Bu (düşünmek aktif ya da değil, bakım modu) bir DB hata ayıklama durumu kurtarmak için bir iş ve bir dosyaya kaydedilmesini çok yararlı olacaktır. Ayrıca ben bunu test olmadığını işaret etmek istiyorum.

sadece teknik bir hata mesajı ile ölüyor en azından son kullanıcılar için, gerçekten yararlı değildir; ve sitenizi kafanızda onlara sahip tasarımı olmalıdır.

: Muhtemelen herkes için daha yararlı bir çözüm olacaktır

  • Bazen kontrol edeceğiz, bir dosyaya teknik hata iletisini günlüğe
  • Son kullanıcı için güzel bir "oops, an error has occured" sayfasını görüntüleyin.


Still, if you really need this, you could :

  • Tek bir dize var, hem de bilgi Concatenate
  • bir if / else blok kullanmak; okumak için kod daha kolay olabilir.


A nice solution might be to use exceptions (semi-pseudo-code) :
Of course, this is conskimlikering you've defined the MySQLException somewhere.

try {
    // Do some stuff

    if (!mysql_query(...)) {
        throw new MySQLException(mysql_error());
    }

    // Some other stuff
} catch (MySQLException $e) {
    // Deal with the MySQLException kind of Exception
    // i.e. deal my SQL errors
    // => Log to file
    //    + display a nice error page
} catch (Exception $e) {
    // At least, if something in the try block
    // might raise an Exception that's not a MySQLException
}

İstisna ile güzel bir şey hataları ile ilgilenen tüm kodunuzu bir yerde olmasıdır: hayır die kodunuzu ortasında her yerde var

Böylece her iki nl2br($qVraagOp) ve mysql_error() göstermek istiyorum? Olurdu

or die(nl2br($qVraagop) . PHP_EOL . mysql_error())

(nl2br($qVraagOp) ve mysql_error() arasında bir yeni satır yerleştirmek için PHP_EOL sabit kullanılması)

Ben PHP bu denemek gerektiğini değilim, ama çalışması gerekir. Üzgünüm, eğer :)

$rVraagOp = mysql_query( $qVraagOp ) or echo(nl2br($qVraagOp)) and die(mysql_error());

Siz yazabilirsiniz

$rVraagOp = mysql_query( $qVraagOp ) 
          or die( sprintf("%s%s%s", nl2br($qVraagop), PHP_EOL, mysql_error()) );

die () argüman olarak bir dize (veya bir int) alır.

Ölüyor mesaj sadece günlüğünde depolanan emin olun ve genellikle işe yaramaz ve hatta tehlikeli olduğu gibi, son kullanıcı için çıkış yok (potansiyel saldırganlar için yapılandırma hakkında bilgi ortaya koymaktadır.)