103

私はMySQLデータベースにアクセスするためのphpアプリを書いています.チュートリアルでは、次のような形をしています

mysql_connect($host, $user, $pass) or die("could not connect");

PHP は関数が失敗したことをどのように認識して、金型の部分を実行するのでしょうか? 「または」の部分がどのように機能するかを尋ねていると思います。私は前にそれを見たことがないと思います。

4

4 に答える 4

139

最初のステートメントがを返す場合、ステートメントtrue全体が必要であるtrueため、2番目の部分は実行されません。

例えば:

$x = 5;
true or $x++;
echo $x;  // 5

false or $x++;
echo $x; // 6

したがって、クエリが失敗した場合は、die()ステートメントが評価され、スクリプトが終了します。

于 2009-01-11T06:16:54.570 に答える
34

PHPorはCのように機能します||(ちなみにPHPでもサポートされています-or見た目が良く、演算子の優先順位が異なります-このページを参照してください)。

最終的な値を決定するのに十分な情報が得られると、評価をスキップするため、短絡演算子として知られています。

あなたの例では、mysql_connect()TRUEを返す場合、PHPは、何が評価されてもステートメント全体がTRUEと評価されることをすでに知っているため、評価されdie()ませdie()ん。

FALSEが返された場合mysql_connect()、PHPはステートメント全体がTRUEまたはFALSEのどちらに評価されるかを認識しないため、続行して評価を試みdie()ます。つまり、プロセスでスクリプトを終了します。

これは、動作方法を利用する優れたトリックですor

于 2009-01-11T06:55:48.687 に答える
11

他の人が説明したように動作します。

PHPでは、(Perlの場合のように)例外を発生させないため、「die」を使用しないでください。代わりに、通常の方法で適切に例外をスローします。

dieはPHPでキャッチできず、ログに記録されません。代わりに、メッセージが正常に出力されず、誰にも何も言わず、イベントを記録したり、再試行したりする機会を与えずに、すぐにスクリプトを終了します。

于 2009-01-11T07:25:35.490 に答える
-1
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
     die("could not connect");
}
else
{
     echo "Connected";
}
于 2010-08-31T03:46:27.380 に答える