6

I have this code snippet:

$conn = mysql_connect($host, $usr, $pwd);

How can I prevent PHP from printing an error message when MySQL access is denied?

I need exactly this syntax but nothing works for me.

I tried $conn = mysql_connect($host, $usr, $pwd) or false; and $conn = mysql_connect($host, $usr, $pwd) || false; and the following:

try {
    $conn = mysql_connect($host, $usr, $pwd);

    if(!$conn) {
        throw new Exception('Failed');
    }
} catch(Exception $e) {
    // ...
}

PHP always prints an error message that the connection failed. But I just want to return false, if it failed.

hakre
  • 193,403
  • 52
  • 435
  • 836
headacheCoder
  • 4,503
  • 8
  • 30
  • 33

4 Answers4

10

Error printing should not be activated on a production server. Consider changing your php.ini configuration to log error instead of displaying it.

Using @ to silent error message is not a good solution.

grunk
  • 14,718
  • 15
  • 67
  • 108
6

I don't know why you want to, but you can add a @ to surpress php errors?

see: http://php.net/manual/en/language.operators.errorcontrol.php

Nanne
  • 64,065
  • 16
  • 119
  • 163
3

You shouldn't really be using mysql_connect in PHP 5, as its now deprecated in favour of mysqli and PDO.

But you can probably silence the warning generated by mysql_connect by prefixing with @:

@mysql_connect()

JamesHalsall
  • 13,224
  • 4
  • 41
  • 66
0

The @ suppresses errors. And also set error reporting error_reporting(0); to turn off all errors. Also check out mysqli

Docs

Mob
  • 10,958
  • 6
  • 41
  • 58
  • Don't turn off your error reporting. Instead you should configure display_errors and log_errors in your php.ini. – Mikk Sep 20 '11 at 13:08