php mysql_connect警告禁用

时间:2013-06-04 08:18:39

标签: php mysql

我有PHP脚本应该尝试连接到本地站点的数据库。如果本地数据库不可用,则应尝试连接到远程服务器上的数据库。

$dblink = mysql_connect(DBHOST_LOCAL, DBUSER, DBPASS) or $RC = 1;
if($RC) {
    $dblink = mysql_connect(DBHOST_REMOTE, DBUSER, DBPASS) or die('Could not connect'.mysql_error());
}

问题是如果第一次连接失败,我不想在页面上显示警告信息。有没有办法只为mysql_connect()函数禁用警告消息?

5 个答案:

答案 0 :(得分:10)

是的,像这样添加@符号以禁止显示警告/错误消息,然后执行错误一次

$dblink = @mysql_connect(DBHOST_LOCAL, DBUSER, DBPASS);

if (!$dblink) 
{
    $dblink = @mysql_connect(DBHOST_REMOTE, DBUSER, DBPASS);                  
}

if (!$dblink)
{
    $message = sprintf(
        "Could not connect to local or remote database: %s",
        mysql_error()
    );
    trigger_error($message);
    return;
}

请注意,您需要处理自己的所有错误报告。如果你犯了错误,这样的代码很难调试。

答案 1 :(得分:4)

您可以设置错误报告error_reporting(0);以关闭针对特定页面的错误和警告

根据您的需要设置

# config.ini 
# PHP error reporting. supported values are given below. 
# 0 - Turn off all error reporting 
# 1 - Running errors 
# 2 - Running errors + notices 
# 3 - All errors except notices and warnings 
# 4 - All errors except notices 
# 5 - All errors 

Doc

就像这样在页面中设置

<?php 

      error_reporting(E_ERROR | E_WARNING | E_PARSE);

?>

请告诉我是否可以为您提供更多帮助。

答案 2 :(得分:3)

正确的解决方案是禁止向用户显示PHP错误,警告和通知。这可以通过php.ini配置文件中的display_errors设置来完成:

display_errors = Off

它也可以在运行时通过ini_set()设置:

ini_set('display_errors', '0');

来自Manual

  

<强>的display_errors
  这决定了是否应将错误作为输出的一部分打印到屏幕上,或者是否应该向用户隐藏错误。

这样做可以防止任何用户看到敏感的PHP错误消息,但仍允许他们打印到日志文件中。

使用@抑制方法可以达到您想要的效果,但它仍然允许向用户打印任何其他PHP错误/警告,这是一个安全问题,因为这些错误可能包含应该包含的敏感信息不要暴露。

答案 3 :(得分:0)

您不能使用以下方法:

if (!$connection = mysql_connect(DBHOST_LOCAL, DBUSER, DBPASS)) {
    die('And here we connect to the other server');
} 

当连接失败时,它返回一个布尔值,这将导致if语句为真。

答案 4 :(得分:0)

我以 try 语法放置mysql查询,以避免显示消息

try {
    some code of sql
} catch (Exception $e) {
    $errors[] = $e->getMessage();
}