エラーが発生した場合、彼に2つのことをしてもらいたい.
- echo nl2br($qVraagOp);
- mysql_error();
だから私は思った:
$rVraagOp = mysql_query( $qVraagOp ) or die( echo nl2br($qVraagOp); mysql_error(); );
これら 2 つのことを実行する関数を作成し、それを呼び出すことができますが、それは少し冗長です。他の方法はありますか?
マティ
技術的なエラー メッセージが表示されるだけでは、少なくともエンド ユーザーにとっては役に立ちません。それらを念頭に置いてサイトを設計する必要があります。
おそらく誰にとってもより便利な解決策は次のとおりです。
それでも、これが本当に必要な場合は、次のことができます。
良い解決策は、例外(半疑似コード)を使用することです。
もちろん、これは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
}
Exception の良い点の 1 つは、エラーを処理するすべてのコードが 1 か所にあることですdie
。コードの途中にどこにもありません。
私は次のような関数を書きます:
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に保存するのはあなたの仕事です(メンテナンスモードがアクティブかどうかを考えてください)。ファイルへのログも役立ちます。また、私はそれをテストしなかったことを指摘したいと思います。
だからあなたは両方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) を引数として受け取ります。
瀕死のメッセージはログにのみ保存され、最終ユーザーには出力されないことを確認してください。これは、通常は役に立たず、危険でさえあるためです (設定に関する情報が潜在的な攻撃者に明らかになります)。