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