我使用error_reporting(0)代码来隐藏PHP错误,这总是有效,但是mysql中有一些错误是没用的,有没有mysql的代码可以隐藏mysql错误,比如无效的sql,1064错误
答案 0 :(得分:3)
这是一个想法:不要。
立即重新启用PHP错误报告,修复这些错误,而不是将它们扫地出门。
就个人而言,我喜欢使用error_reporting(E_ALL ^ E_NOTICE)
。虽然它并不完美,但我忽略了通知,因为默认行为是我想要发生的事情。
忽略MySQL错误是一个很大的 HELL NO! ......好吧,除非你想要一台死机,一百万客户对你很生气。
答案 1 :(得分:1)
$result = @mysql_operation();
$errno = mysql_errno();
if ($errno > 0)
{
handle_error();
}
答案 2 :(得分:0)
函数调用前面的@
应该可以抑制生成的任何错误。
是the error control operator。我会非常轻松地使用它,并尝试修复首先产生错误/警告的代码。
我使用@
的唯一一次是当我使用已弃用代码的第三方库时。使用它太多会掩盖任何真正的问题(比如你可能会遇到的问题),当它们弹出时会使调试变得非常困难。
答案 3 :(得分:0)
警告强>
来自php.net
来自php.net
更好的方法:
自定义您自己的想法。只有错误行或错误号码之间的错误
<?php
function exception_error_handler($errno, $errstr, $errfile, $errline )
{
if (error_reporting() === 0)
{
return;
}
//example turn error OFF, between line 100 and 200
if ($errline<100 || $errline>200) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
} else return;
}
set_error_handler("exception_error_handler");
function catchException($e)
{
// Do some stuff
}
set_exception_handler('catchException');
?>
答案 4 :(得分:0)
我很惊讶我还没有看到异常被抛出。
Try / catch是一种非常有效的方法,可以自定义运行时错误和异常,并允许代码继续执行而不是暂停。
class MySQLConnectException extends Exception{
public function __construct( $message ){
parent::__construct( $message );
}
}
try{
$mysql = new mysqli();
If( !$mysql )
Throw new MySQLConnectException('Failed to connect');
}
catch( MySQLConnectException $e ){
echo $e-> getMessage();
}