103

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

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

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

4

4 回答 4

139

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

例如:

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

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

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

于 2009-01-11T06:16:54.570 回答
34

PHP 的or工作方式与 C 类似||(顺便提一下,PHP 也支持它——or只是看起来更好,并且有不同的运算符优先级——参见这个页面)。

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

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

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

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

于 2009-01-11T06:55:48.687 回答
11

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

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

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 回答