PHP 防止在执行完整代码之前死亡
PHP prevent die before executing full code
我有如下代码,我在最后重定向用户,但有时似乎没有设置输出变量或没有执行插入查询。那么有没有什么办法可以等到所有操作完成后再执行die语句呢
谢谢
$diff=levenshtein(strtolower($str1),strtolower($str2));
if($diff<=2)
{
$output="ok";
}
else
{
$output="Not ok";
}
$query="INSERT INTO `table` (`sn`, `output`) VALUES (NULL,'$output')";
$result=mysqli_query($con,$query);
header('Location: http://www.domain.com/');
die;
它不起作用的原因可能有多种。
第一个也是最明显的是,在您的页面上只显示一个简单的警告(未设置变量 X)就足够了,这将破坏您的 header() 命令。它会说 headers 已经设置。
第二个问题是,有时服务器正忙于响应其他请求,而您的 $con 变量将是布尔值 false 而不是可靠的数据库连接器,因此您的查询也可能因此而失败。
我在现实生活中遇到过这两种情况,我通过确保在使用前设置每个变量并检查查询是否成功执行来解决它们。
您可以使用以下代码检查是否设置了变量:
if (!isset($variable)) $variable = "set me here";
您可以通过添加以下内容来检查您的查询是否已成功执行:
if (!$result) {
//do something here in case your query failed
}
我有如下代码,我在最后重定向用户,但有时似乎没有设置输出变量或没有执行插入查询。那么有没有什么办法可以等到所有操作完成后再执行die语句呢
谢谢
$diff=levenshtein(strtolower($str1),strtolower($str2));
if($diff<=2)
{
$output="ok";
}
else
{
$output="Not ok";
}
$query="INSERT INTO `table` (`sn`, `output`) VALUES (NULL,'$output')";
$result=mysqli_query($con,$query);
header('Location: http://www.domain.com/');
die;
它不起作用的原因可能有多种。
第一个也是最明显的是,在您的页面上只显示一个简单的警告(未设置变量 X)就足够了,这将破坏您的 header() 命令。它会说 headers 已经设置。
第二个问题是,有时服务器正忙于响应其他请求,而您的 $con 变量将是布尔值 false 而不是可靠的数据库连接器,因此您的查询也可能因此而失败。
我在现实生活中遇到过这两种情况,我通过确保在使用前设置每个变量并检查查询是否成功执行来解决它们。
您可以使用以下代码检查是否设置了变量:
if (!isset($variable)) $variable = "set me here";
您可以通过添加以下内容来检查您的查询是否已成功执行:
if (!$result) {
//do something here in case your query failed
}