在PHP脚本中处理错误和继续执行

时间:2011-05-10 20:37:06

标签: php execution die

当它只涉及脚本的一小部分并且我尝试时,我不想“死()”:

$result = mysql_query($sql) or echo("error with responses");

但它产生了一个错误。我如何只是发出错误消息并继续执行脚本的其余部分,因为即使它无法连接,其余部分也不会受到影响。

7 个答案:

答案 0 :(得分:5)

就原来的问题标题而言 - 你不能。 dieexit的目的是终止脚本处理。如果您不想终止脚本处理,请不要致电dieexit

在抑制错误输出方面,可以使用error control operator@),但也可以这样做。 (如果您以这种方式抑制错误, 必须 自行检查错误状态。)

例如,您可以使用:

$result = @mysql_query($sql);
if(is_resource($result)) {
    // The query worked...

}
else {
   // Handle error state, perhaps using mysql_error
}

但是,为了清楚说明, 从不 随意将错误抑制器添加到函数调用中。您 必须 确保您自己正确处理任何潜在错误。

答案 1 :(得分:5)

$result = mysql_query($sql);
if(mysql_error()) {
  echo "Error: " . mysql_error();
}

答案 2 :(得分:2)

$result = mysql_query($sql) or print("error with responses");

Echo不能用于逻辑比较,例如你要做的事情。您应该使用print,这不会导致PHP错误。

答案 3 :(得分:1)

检查mysql_query的返回类型

$result = mysql_query($sql);
if ($result===false) {

 echo 'The Query failed';
}

//> Continue

答案 4 :(得分:1)

您不必使用die作为第二个函数调用,它几乎在每个mysql_query教程中都被用作约定。

我们所做的只是评估一个布尔表达式。 $result = $a OR $b。如果$a的值为true,那么我们永远不会执行$b因为我们不需要。我们对逻辑OR感到满意,运算符的一边是真的,这就是我们所需要的。

die()函数会立即退出脚本并显示一条消息。你可以用你自己的函数替换它来打印一个漂亮的错误信息并继续通过脚本而不退出。例如:

function my_error_function($status) {
    echo "ERROR: $status";
}

$result = mysql_query($sql) or my_error_function("Uhoh.  There was a problem executing $sql.");

答案 5 :(得分:0)

您可以在生产环境中关闭错误报告。

error_reporting(0);

它仍会抛出错误,但不会再显示。

但这非常不寻常。我想不出有人会想要接受mySQL错误的原因 - 如果问题是SQL,你通常会事先发现它。

答案 6 :(得分:0)

你应该看尝试 / 抓住而不是死()或退出