如何“做一些事情或DIE()”在PHP中工作?

问题描述 投票:95回答:4

我正在编写一个用于访问MySQL数据库的php应用程序,在教程中,它说的是一些表单

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

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

php mysql exception-handling conditional
4个回答
129
投票

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

例如:

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

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

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


32
投票

PHP的or就像C的||一样(顺便提一下,PHP也支持它 - or只是看起来更好,并且具有不同的运算符优先级 - 请参阅this page)。

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

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

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

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


11
投票

它像其他人描述的那样有效。

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

die无法在PHP中捕获,也不会记录 - 相反,它会不正确地打印消息并立即退出脚本而不告诉任何人或给你任何记录事件的机会,重试等。


-1
投票
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
     die("could not connect");
}
else
{
     echo "Connected";
}
© www.soinside.com 2019 - 2024. All rights reserved.