处理错误,并在PHP脚本
问题描述:
我不想继续执行“死()”时,它仅涉及脚本的一小部分,我想:处理错误,并在PHP脚本
$result = mysql_query($sql) or echo("error with responses");
但它产生的错误。如何发布错误消息并继续执行脚本的其余部分,因为即使连接失败,其余部分也不应受到影响。
答
根据您的原始问题标题 - 你不能。 die
和exit
的目的是终止脚本处理。如果您不想终止脚本处理,请不要拨打die
或exit
。
在抑制错误输出方面,可以使用error control operator(@
),但这是可取的。 (您必须检查错误状态自己,如果你抑制这样的错误。)
例如,你可以使用:
$result = @mysql_query($sql);
if(is_resource($result)) {
// The query worked...
}
else {
// Handle error state, perhaps using mysql_error
}
然而,就表明这一点,从不随便添加错误抑制器到函数调用。你必须确保你自己正确地处理任何潜在的错误。
答
检查返回类型的mysql_query
的$result = mysql_query($sql);
if ($result===false) {
echo 'The Query failed';
}
//> Continue
答
您可以关闭错误报告,要在生产环境中做的反正。
error_reporting(0);
它仍然会抛出错误,但不会再显示。
虽然这是非常不寻常的。我想不出为什么要接受一个mySQL错误的原因 - 如果问题是SQL被破坏,你通常会事先收到它。
答
$result = mysql_query($sql) or print("error with responses");
回声不能在逻辑比较中使用,如你想要做什么。您应该使用print来代替,这不会导致PHP错误。
答
您不必使用die
作为第二个函数调用,它几乎在每个mysql_query
教程中都用作约定。
我们正在做的是评估一个布尔表达式。 $result = $a OR $b
。如果$a
的值为真,那么我们从不执行$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.");
问题标题几乎给了我一个动脉瘤。 – Charles 2011-05-10 20:39:14
看,现在这是一个获得观点/回应的标题。通常只有一个致命的错误(通常是语法错误等)应该杀死一个脚本。你得到的具体错误信息是什么? – Wige 2011-05-10 20:41:53
实际上,这很有趣,我看了问题列表后没有注意到我的标题,然后问我。大声笑我不想因为mysql错误而终止脚本。我想继续执行脚本的其余部分,即使它无法从db中获取数据。 – netrox 2011-05-10 20:47:38