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

chu*_*tar 96 php mysql conditional exception-handling

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

mysql_connect($host, $user, $pass) or die("could not connect");
Run Code Online (Sandbox Code Playgroud)

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

nic*_*ckf 130

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

例如:

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

false or $x++;
echo $x; // 6
Run Code Online (Sandbox Code Playgroud)

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

  • 这称为短路评估,在PHP以外的语言中也很有用. (6认同)

Art*_*ius 32

PHP的or工作方式与C类似||(顺便or提一下,PHP也支持它 - 只是看起来更好,并且具有不同的运算符优先级 - 请参阅此页).

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

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

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

这只是一个利用工作方式的好方法or.


Mar*_*rkR 11

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

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

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