スクリプトのごく一部にしか関係しない場合は、「die()」を使用したくありません。次のことを試しました。
$result = mysql_query($sql) or echo("error with responses");
しかし、それはエラーを生成しました。接続に失敗しても残りのスクリプトは影響を受けないため、エラーメッセージを表示して、残りのスクリプトを実行し続けるにはどうすればよいですか。
元の質問のタイトルに関しては、できません。dieおよびの目的は、exitスクリプト処理を終了することです。スクリプト処理を終了したくない場合は、dieまたはを呼び出さないでくださいexit。
エラーの出力を抑制するという観点から、これはエラー制御演算子(@)を使用して可能ですが、お勧めできません。(この方法でエラーを抑制している場合は、自分でエラー状態を確認する必要があります。)
たとえば、次のように使用できます。
$result = @mysql_query($sql);
if(is_resource($result)) {
// The query worked...
}
else {
// Handle error state, perhaps using mysql_error
}
ただし、これを明確にするために、エラーサプレッサーを関数呼び出しに何気なく追加しないでください。潜在的なエラーを自分で正しく処理していることを確認する必要があります。
$result = mysql_query($sql);
if(mysql_error()) {
echo "Error: " . mysql_error();
}
$result = mysql_query($sql) or print("error with responses");
Echoは、実行しようとしていることなどの論理比較には使用できません。代わりにprintを使用する必要があります。これにより、PHPエラーが発生しなくなります。
mysql_queryの戻りタイプを確認してください
$result = mysql_query($sql);
if ($result===false) {
echo 'The Query failed';
}
//> Continue
2番目の関数呼び出しとして使用する必要はありません。これは、ほとんどすべてのチュートリアルdieで慣例として使用されています。mysql_query
私たちが行っているのは、ブール式を評価することだけです。 $result = $a OR $b。の値$aがtrueの場合、実行する$b必要がないため、実行することはありません。OR演算子の片側が真であるという論理に満足しました。必要なのはこれだけです。
die()関数は、メッセージとともにスクリプトをすぐに終了します。これを独自の関数に置き換えて、かなりのエラーメッセージを出力し、終了せずにスクリプトを続行できます。例:
function my_error_function($status) {
echo "ERROR: $status";
}
$result = mysql_query($sql) or my_error_function("Uhoh. There was a problem executing $sql.");
実稼働環境でとにかく実行したいエラー報告をオフにすることができます。
error_reporting(0);
それでもエラーがスローされますが、表示されなくなります。
ただし、これは非常に珍しいことです。mySQLエラーを受け入れたい理由は考えられません。問題がSQLで壊れている場合は、通常、事前にそれをキャッチします。
die()またはexitではなくtry / catchを確認する必要があります