PHP连接到MySql错误报告

PHP连接到MySql错误报告,php,mysqli,Php,Mysqli,这看起来很简单,但我在php错误报告方面遇到了麻烦。我正在尝试连接到数据库,如果连接失败,我想报告一条简单消息,例如“连接到数据库失败”。但是使用下面的代码,我得到了这些php警告消息。如何仅显示用户友好的消息?谢谢各位 function mySqlConnection($host, $username, $pass, $dbname){ $connection = mysqli_connect($host, $username, $pass, $dbname) or die ('Con

这看起来很简单,但我在php错误报告方面遇到了麻烦。我正在尝试连接到数据库,如果连接失败,我想报告一条简单消息,例如“连接到数据库失败”。但是使用下面的代码,我得到了这些php警告消息。如何仅显示用户友好的消息?谢谢各位

 function mySqlConnection($host, $username, $pass, $dbname){

 $connection = mysqli_connect($host, $username, $pass, $dbname)
 or die ('Connection to db failed');
}

用户不知道数据库是什么,也不知道如果它失败了该怎么办

对于代码中可能出现的所有错误,您只需显示一个通用错误页面,并发送相应的HTTP代码

所以,就这样吧

set_error_handler("myErrorHandler");
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    error_log("$errstr in $errfile:$errline");
    header('HTTP/1.1 500 Internal Server Error', TRUE, 500);
    readfile("500.html");
    exit;
}

function mySqlConnection($host, $username, $pass, $dbname)
{
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $connection = mysqli_connect($host, $username, $pass, $dbname);
}

其中500.html是用户友好的错误页面

您可以在函数前面加上
@
以抑制警告

function mySqlConnection($host, $username, $pass, $dbname){
 $connection = @mysqli_connect($host, $username, $pass, $dbname)
 or die ('Connection to db failed');
}
您还可以使用
ini_集('display_errors','0')将抑制所有警告和错误,但这可能不是您想要的。(以后调试时可能会变得烦人)

在生产中,您应该禁用错误显示,并将其记录到文件中

$link=mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $link=mysql_connect($host“,$username“,$password”)或die(“无法连接”); mysql_select_db($db_name)或die(“无法选择db”); if(mysqli\u connect\u errno()) { echo“未能连接到MySQL:”.mysqli_connect_error(); }
这个答案与其本身相矛盾,但它是有效的。。。mysqli_connect开头的@确实会删除警告消息,但不会。调试时,您不需要堵住错误消息,但无论如何,您都会关闭在生产环境中显示错误。@您的常识生产模式和调试模式之间有区别。调试时,您希望看到所有警告和错误(抑制此警告和错误仍将显示错误
连接到db失败
)。在生产模式下,您希望禁用所有错误显示并将其记录到一个文件中,但这应该在web服务器配置中完成。@您的常识由开发人员决定。您可以在其中放置任何内容。但我们现在离题了。OP需要一个解决方案来抑制警告和错误,并显示连接到db失败的
,这就是问题的解决方案。在生产模式下,您的web服务器应该配置为在PHP错误发生时抛出500。但调试时,这可能会变得非常烦人。