关于 mysql:\\”do something OR DIE()\\” 如何在 PHP 中工作?

How does "do something OR DIE()" work in PHP?

我正在编写一个 php 应用程序来访问 MySQL 数据库,在教程中,它说的形式是

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

PHP 是如何知道函数失败以便运行 die 部分的?我想我在问它的??"或"部分是如何工作的。我不认为我以前见过它。


如果第一条语句返回true,那么整个语句必须是true,因此第二部分永远不会执行。

例如:

1
2
3
4
5
6
$x = 5;
true or $x++;
echo $x;  // 5

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

因此,如果您的查询不成功,它将评估 die() 语句并结束脚本。


PHP 的 or 像 C 的 || 一样工作(顺便说一下,PHP 也支持它 - or 看起来更好,并且具有不同的运算符优先级 - 请参阅此页面)。

它被称为短路运算符,因为一旦它有足够的信息来决定最终值,它将跳过任何评估。

在您的示例中,如果 mysql_connect() 返回 TRUE,则 PHP 已经知道无论 die() 评估为什么,整个语句都将评估为 TRUE,因此不会评估 die()

如果 mysql_connect() 返回 FALSE,PHP 不知道整个语句将评估为 TRUE 还是 FALSE,因此它会继续并尝试评估 die() - 结束进程中的脚本。

这只是一个利用 or 工作方式的好技巧。


它像其他人描述的那样工作。

在 PHP 中,不要使用"die",因为它不会引发异常(就像在 Perl 中那样)。而是以正常方式正确抛出异常。

die 不能在 PHP 中被捕获,并且不记录 - 相反,它不优雅地打印消息并立即退出脚本,而不告诉任何人任何事情或给你任何机会记录事件,重试等。


1
2
3
4
5
6
7
8
9
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
     die("could not connect");
}
else
{
     echo"Connected";
}