PHP:die / exit中的多个命令

时间:2010-02-22 20:16:33

标签: php command exit die

当它出错时,我希望他做两件事。

  1. echo nl2br($ qVraagOp);
  2. mysql_error();
  3. 所以我想:

    $rVraagOp = mysql_query( $qVraagOp ) or die( echo nl2br($qVraagOp); mysql_error(); );
    

    我可以编写一个执行这两项操作的函数,然后调用它,但这有点多余。 还有另一种方式吗?

    Matthy

5 个答案:

答案 0 :(得分:5)

只是因为技术错误消息而死,所以至少对你的最终用户来说并不是很有用;你应该设计一下你的网站。

对任何人来说可能更有用的解决方案是:

  • 将技术错误消息记录到您有时会检查的文件
  • 向最终用户显示一个不错的“ oops,发生错误”页面。


不过,如果你真的需要这个,你可以:

  • 连接两个信息,只有一个字符串
  • 使用if / else-block;这可能会使您的代码更容易阅读。


一个不错的解决方案可能是使用异常(半伪代码)
当然,这是考虑到你已在某处定义了MySQLException

try {
    // Do some stuff

    if (!mysql_query(...)) {
        throw new MySQLException(mysql_error());
    }

    // Some other stuff
} catch (MySQLException $e) {
    // Deal with the MySQLException kind of Exception
    // i.e. deal my SQL errors
    // => Log to file
    //    + display a nice error page
} catch (Exception $e) {
    // At least, if something in the try block
    // might raise an Exception that's not a MySQLException
}

Exception的一个好处是,处理错误的所有代码都在一个地方:代码中间到处都没有die

答案 1 :(得分:1)

我会写一个像:

这样的函数
function PrintDebug($DebugData)
{ 
  if($DebugMode == 1)
  { 
      return nl2br($DebugData) . "<br />" . mysql_error();
  }
  else
  {
      return "Ops stuff got messed up!!!";
  }
} 

我会像

一样使用它
$rVraagOp = mysql_query( $qVraagOp ) or die(PrintDebug($qVraagOp));

您的工作是将调试状态保存在数据库中(认为维护模式是否处于活动状态),并且记录到文件也会很有帮助。另外我想指出我没有测试过它。

答案 2 :(得分:0)

您想同时展示nl2br($qVraagOp)mysql_error()吗?那将是

or die(nl2br($qVraagop) . PHP_EOL . mysql_error())

(使用PHP_EOL常量在nl2br($qVraagOp)mysql_error()之间添加换行符

答案 3 :(得分:0)

我不应该在PHP上尝试这个,但它应该可行。对不起,如果没有:)

$rVraagOp = mysql_query( $qVraagOp ) or echo(nl2br($qVraagOp)) and die(mysql_error());

答案 4 :(得分:0)

你可以写

$rVraagOp = mysql_query( $qVraagOp ) 
          or die( sprintf("%s%s%s", nl2br($qVraagop), PHP_EOL, mysql_error()) );

die()接收一个字符串(或一个int)作为参数。

确保您的垂死消息仅存储在日志中,并且不会输出给最终用户,因为它通常是无用的甚至是危险的(向潜在的攻击者显示有关您的配置的信息。)