私はMySQLデータベースにアクセスするためのphpアプリを書いています.チュートリアルでは、次のような形をしています
mysql_connect($host, $user, $pass) or die("could not connect");
PHP は関数が失敗したことをどのように認識して、金型の部分を実行するのでしょうか? 「または」の部分がどのように機能するかを尋ねていると思います。私は前にそれを見たことがないと思います。
私はMySQLデータベースにアクセスするためのphpアプリを書いています.チュートリアルでは、次のような形をしています
mysql_connect($host, $user, $pass) or die("could not connect");
PHP は関数が失敗したことをどのように認識して、金型の部分を実行するのでしょうか? 「または」の部分がどのように機能するかを尋ねていると思います。私は前にそれを見たことがないと思います。
最初のステートメントがを返す場合、ステートメントtrue
全体が必要であるtrue
ため、2番目の部分は実行されません。
例えば:
$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
したがって、クエリが失敗した場合は、die()
ステートメントが評価され、スクリプトが終了します。
PHPor
はCのように機能します||
(ちなみにPHPでもサポートされています-or
見た目が良く、演算子の優先順位が異なります-このページを参照してください)。
最終的な値を決定するのに十分な情報が得られると、評価をスキップするため、短絡演算子として知られています。
あなたの例では、mysql_connect()
TRUEを返す場合、PHPは、何が評価されてもステートメント全体がTRUEと評価されることをすでに知っているため、評価されdie()
ませdie()
ん。
FALSEが返された場合mysql_connect()
、PHPはステートメント全体がTRUEまたはFALSEのどちらに評価されるかを認識しないため、続行して評価を試みdie()
ます。つまり、プロセスでスクリプトを終了します。
これは、動作方法を利用する優れたトリックですor
。
他の人が説明したように動作します。
PHPでは、(Perlの場合のように)例外を発生させないため、「die」を使用しないでください。代わりに、通常の方法で適切に例外をスローします。
dieはPHPでキャッチできず、ログに記録されません。代わりに、メッセージが正常に出力されず、誰にも何も言わず、イベントを記録したり、再試行したりする機会を与えずに、すぐにスクリプトを終了します。
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
die("could not connect");
}
else
{
echo "Connected";
}