4

スクリプトのごく一部にしか関係しない場合は、「die()」を使用したくありません。次のことを試しました。

$result = mysql_query($sql) or echo("error with responses");

しかし、それはエラーを生成しました。接続に失敗しても残りのスクリプトは影響を受けないため、エラーメッセージを表示して、残りのスクリプトを実行し続けるにはどうすればよいですか。

4

7 に答える 7

5

元の質問のタイトルに関しては、できません。dieおよびの目的は、exitスクリプト処理を終了することです。スクリプト処理を終了したくない場合は、dieまたはを呼び出さないでくださいexit

エラーの出力を抑制するという観点から、これはエラー制御演算子@)を使用して可能ですが、お勧めできません。(この方法でエラーを抑制している場合は、自分でエラー状態を確認する必要があります。)

たとえば、次のように使用できます。

$result = @mysql_query($sql);
if(is_resource($result)) {
    // The query worked...

}
else {
   // Handle error state, perhaps using mysql_error
}

ただし、これを明確にするために、エラーサプレッサーを関数呼び出しに何気なく追加しないでください。潜在的なエラーを自分で正しく処理していることを確認する必要があります

于 2011-05-10T20:39:48.370 に答える
5
$result = mysql_query($sql);
if(mysql_error()) {
  echo "Error: " . mysql_error();
}
于 2011-05-10T20:40:12.257 に答える
2
$result = mysql_query($sql) or print("error with responses");

Echoは、実行しようとしていることなどの論理比較には使用できません。代わりにprintを使用する必要があります。これにより、PHPエラーが発生しなくなります。

于 2011-05-10T20:46:32.533 に答える
1

mysql_queryの戻りタイプを確認してください

$result = mysql_query($sql);
if ($result===false) {

 echo 'The Query failed';
}

//> Continue
于 2011-05-10T20:40:32.913 に答える
1

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.");
于 2011-05-10T20:48:46.157 に答える
0

実稼働環境でとにかく実行したいエラー報告をオフにすることができます。

error_reporting(0);

それでもエラーがスローされますが、表示されなくなります。

ただし、これは非常に珍しいことです。mySQLエラーを受け入れたい理由は考えられません。問題がSQLで壊れている場合は、通常、事前にそれをキャッチします。

于 2011-05-10T20:40:36.643 に答える
0

die()またはexitではなくtry / catchを確認する必要があります

于 2011-05-10T20:41:20.453 に答える