質問
エラーが発生したら、彼に2つのことをしてほしい。
- echo nl2br($ qvraagop);
- mysql_error();
だから私はthougth:
$rVraagOp = mysql_query( $qVraagOp ) or die( echo nl2br($qVraagOp); mysql_error(); );
これらの2つのことを行う関数を書いてから、それを呼びますが、それは少し冗長です。他の方法はありますか?
マッティ
解決
次のような関数を書きます。
function PrintDebug($DebugData)
{
if($DebugMode == 1)
{
return nl2br($DebugData) . "<br />" . mysql_error();
}
else
{
return "Ops stuff got messed up!!!";
}
}
そして、私はそれを使用します
$rVraagOp = mysql_query( $qVraagOp ) or die(PrintDebug($qVraagOp));
DBでデバッグステータスを保存するのはあなたの仕事です(メンテナンスモードがアクティブかどうかと考えています)、ファイルへのログも役立ちます。また、私はそれをテストしなかったことを指摘したいと思います。
他のヒント
少なくともエンドユーザーにとっては、技術的なエラーメッセージで死ぬことは本当に有用ではありません。そして、あなたはそれらを念頭に置いてあなたのサイトを設計する必要があります。
誰にとってもおそらくより便利なソリューションは、次のことです。
- 技術的なエラーメッセージをファイルにログに記録します。
- 素敵なものを表示します」おっと、エラーが発生しました「エンドユーザーへのページ。
それでも、本当にこれが必要な場合は、次のことができます。
- 両方の情報を連結して、1つの文字列のみを持つようにします
- if/else-blockを使用します。これにより、コードがより読みやすくなる可能性があります。
素晴らしい解決策は、例外を使用することです (セミプソードコード) :
もちろん、これはあなたが定義したことを検討しています MySQLException
どこか。
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
}
例外を除いて良いことの1つは、エラーを扱うすべてのコードが1つの場所にあるということです。 die
コードの真ん中のどこにでも
だからあなたは両方を見せたいです nl2br($qVraagOp)
と mysql_error()
?そうでしょう
or die(nl2br($qVraagop) . PHP_EOL . mysql_error())
(を使用します PHP_EOL
間に新しいラインを配置するために一定 nl2br($qVraagOp)
そしてその mysql_error()
)
PHPでこれを試してはいけませんが、機能するはずです。申し訳ありません、そうでない場合:)
$rVraagOp = mysql_query( $qVraagOp ) or echo(nl2br($qVraagOp)) and die(mysql_error());
あなたは書ける
$rVraagOp = mysql_query( $qVraagOp )
or die( sprintf("%s%s%s", nl2br($qVraagop), PHP_EOL, mysql_error()) );
die()は、引数として文字列(またはint)を受信します。
死にゆくメッセージがログにのみ保存されていることを確認してください。通常は役に立たず、危険でさえあるため、最終ユーザーに出力されません(潜在的な攻撃者への構成に関する情報が明らかになります。)