PHP在执行完整代码之前防止死亡

时间:2015-01-19 14:56:54

标签: php mysqli

我有以下代码,我在最后重定向用户,但有时似乎输出变量未设置或插入查询未执行。那么有什么方法可以在执行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;

1 个答案:

答案 0 :(得分:1)

可能有几个原因导致它无效。

第一个也是最明显的就是在页面上只有一个简单的警告就足够了(变量X没有设置),这会打破你的header()命令。它会说已经设置了标题。

第二个问题是,有时服务器忙着回答其他请求而你的$ con变量将是一个布尔值false而不是一个可靠的数据库连接器,因此你的查询也可能因此失败。

我在现实生活中遇到过这两种情况,我通过确保在使用它之前设置每个变量并检查查询是否成功执行来解决它们。

您可以使用以下代码检查是否设置了变量:

if (!isset($variable)) $variable = "set me here";

您可以通过添加以下内容来检查您的查询是否已成功执行:

if (!$result) {
    //do something here in case your query failed
}