当它出错时,我希望他做两件事。
所以我想:
$rVraagOp = mysql_query( $qVraagOp ) or die( echo nl2br($qVraagOp); mysql_error(); );
我可以编写一个执行这两项操作的函数,然后调用它,但这有点多余。 还有另一种方式吗?
Matthy
答案 0 :(得分:5)
对任何人来说可能更有用的解决方案是:
不过,如果你真的需要这个,你可以:
一个不错的解决方案可能是使用异常(半伪代码):
当然,这是考虑到你已在某处定义了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)作为参数。
确保您的垂死消息仅存储在日志中,并且不会输出给最终用户,因为它通常是无用的甚至是危险的(向潜在的攻击者显示有关您的配置的信息。)