我正在编写一个 php 应用程序来访问 MySQL 数据库,并且在一个教程中,它说了一些形式
mysql_connect($host, $user, $pass) or die("could not connect");
PHP 是如何知道函数失败以便运行 die 部分的?我想我在问它的“或”部分是如何工作的。我不认为我以前见过它。
我正在编写一个 php 应用程序来访问 MySQL 数据库,并且在一个教程中,它说了一些形式
mysql_connect($host, $user, $pass) or die("could not connect");
PHP 是如何知道函数失败以便运行 die 部分的?我想我在问它的“或”部分是如何工作的。我不认为我以前见过它。
如果第一条语句返回true
,则整个语句必须是,true
因此第二部分永远不会执行。
例如:
$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
因此,如果您的查询不成功,它将评估die()
语句并结束脚本。
PHP 的or
工作方式与 C 类似||
(顺便提一下,PHP 也支持它——or
只是看起来更好,并且有不同的运算符优先级——参见这个页面)。
它被称为短路运算符,因为一旦它有足够的信息来决定最终值,它将跳过任何评估。
在您的示例中,如果mysql_connect()
返回 TRUE,则 PHP 已经知道整个语句将评估为 TRUE,无论评估die()
结果如何,因此die()
不会被评估。
如果mysql_connect()
返回 FALSE,PHP 不知道整个语句将评估为 TRUE 还是 FALSE,因此它继续并尝试评估die()
- 结束进程中的脚本。
这只是一个利用工作方式的好技巧or
。
它像其他人描述的那样工作。
在 PHP 中,不要使用“die”,因为它不会引发异常(就像在 Perl 中那样)。而是以正常方式正确抛出异常。
die 不能在 PHP 中被捕获,并且不记录 - 相反,它不优雅地打印消息并立即退出脚本,而不告诉任何人任何事情或给你任何机会记录事件,重试等。
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
die("could not connect");
}
else
{
echo "Connected";
}