4

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

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

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

4

7 回答 7

5

就您的原始问题标题而言-您不能。die和的目的exit是终止脚本处理。如果您不想终止脚本处理,请不要调用dieor exit

在抑制错误输出方面,可以使用错误控制运算符( @),但不建议这样做。(如果您以这种方式抑制错误,则必须自己检查错误状态。)

例如,您可以使用:

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

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

但是,为了清楚起见,切勿随便将错误抑制器添加到函数调用中。您必须确保自己正确处理任何潜在错误。

于 2011-05-10T20:39:48.370 回答
5
$result = mysql_query($sql);
if(mysql_error()) {
  echo "Error: " . mysql_error();
}
于 2011-05-10T20:40:12.257 回答
2
$result = mysql_query($sql) or print("error with responses");

Echo 不能用于逻辑比较,例如您正在尝试做的事情。您应该使用 print 代替,这不会导致 PHP 错误。

于 2011-05-10T20:46:32.533 回答
1

您不必将其用作第二个函数调用,它只是在几乎所有教程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.");
于 2011-05-10T20:48:46.157 回答
1

检查mysql_query的返回类型

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

 echo 'The Query failed';
}

//> Continue
于 2011-05-10T20:40:32.913 回答
0

您可以关闭错误报告,无论如何您都希望在生产环境中执行此操作。

error_reporting(0);

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

不过,这是非常不寻常的。我想不出一个人愿意接受 mySQL 错误的原因——如果问题是 SQL 损坏,您通常会事先发现它。

于 2011-05-10T20:40:36.643 回答
0

您应该查看try / catch not die() 或 exit

于 2011-05-10T20:41:20.453 回答