在函数内调用die()时会发生什么

时间:2016-04-14 17:35:26

标签: php

我正在处理更新个人资料页面,并且有类似的内容来更新用户详细信息:

account.php

include_once('update_account.php');
$verify_credentials = checkcredentials($email, $password);
if ($verify_credentials == 1)
{
  $update_result = updateaccount($email, $newpassword);
}

update_account.php

session_start();
include_once('connect.php');
function updateaccount($email, $newpassword)
{
    $actcode = md5(uniqid(rand()));
    $update_query = mysqli_query($link, "UPDATE TABLE fu_user SET email = '$email', password = '$newpassword', is_activated='0', activation_code='$actcode' where email = '".$_SESSION['email']."'") or die ('Unable to Update');
      if($update_query){
        $_SESSION['email'] = $email;
        $_SESSION['activated'] = '0';
        $update_result = "Your Email and Password has been updated successfully.";
      }
return $update_result;
}

那么现在如果查询执行失败并调用die()会发生什么? updateaccount()会从被调用的地方返回任何内容吗?

据我所知,die()exit()完全相同,之后暂停执行,并调用析构函数进行清理过程。

上述表演的其他方式是:

$update_query = mysqli_query($link, "UPDATE TABLE fu_user SET email = '$email', password = '$newpassword',
is_activated='0', activation_code='$actcode' where email = '".$_SESSION['email']."'");
if ($update_query)
{
    //Return Success
}
else
{
    //Return Failure
}

2 个答案:

答案 0 :(得分:3)

是,exitdie立即结束脚本执行。调用exit的函数没有返回任何内容,因为执行在正常流程中不会继续执行。

之后你只写了destructors are called

  

即使使用exit()停止脚本执行,也会调用析构函数。在析构函数中调用exit()将阻止剩余的关闭例程执行。

还有一个特例,你也可以在执行停止之前调用register a shutdown function

  

在脚本执行完成或调用exit()后注册要执行的回调。

正如其他人所指出的,实际上处理错误状态比停止执行更好。我认为您不希望向用户显示带有错误消息的空白页面。从函数返回一个指示错误状态的值,或者更好地使用exceptions并在更高级别处理错误状态。

答案 1 :(得分:0)

  

die()是PHP中的内置函数。它用于打印   消息并退出当前的PHP脚本。相当于   PHP中的exit()函数。

语法:

die($message)

参数:此函数仅接受一个参数,该参数不是必须传递的参数。

$ message::此参数表示从脚本退出时要打印的消息。 返回值:没有返回值,但是在退出脚本时会打印给定消息。