Cannot turn off errors from @mysql_connect

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • AgentSpanky
    New Member
    • Nov 2008
    • 4

    Cannot turn off errors from @mysql_connect

    Hi All,

    I have a script that runs on two servers - one with SQL, and one without.
    I have coded it so that it doesn't matter on which server it runs, but when I try to connect (to determine which strategy to follow) with:
    Code:
    function connect_to_sql_ok() {
    	$conn = @mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_pass) or die('<hr />MySQL Error: ' .mysql_error(). '<hr />'); 
    	if ($conn != false) {
    		$rs = mysql_select_db($this->mysql_db, $conn);
    	}
    	return $conn;	
    }
    .. I get "MySQL Error: Access denied for user blahblah@blah.
    This is on the server without MySQL. The same code with access to MySQL runs just fine.

    I don't want the error getting printed out - I just want the routine to quietly return FALSE, so that I can get on with the other strategy.

    I have set as follows:
    error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    I thought that @ would suppress errors from a function, but it seems not..

    Does anyone have any idea?

    Thanks..
  • pbmods
    Recognized Expert Expert
    • Apr 2007
    • 5821

    #2
    Heya, AgentSpanky.

    You can try turning off display_errors (PHP: Runtime Configuration - Manual), but this will kill error messages for all errors, and they will still show up in your log.

    One idea would be to try checking for mysql's pidfile before attempting to connect (Class: Daemons::PidFil e). MySQL generally stores this in the var directory within the installation directory that was specified when MySQL was installed.

    Checking for the pidfile will only work if you are running the database on the same machine as your web server.

    Comment

    • AgentSpanky
      New Member
      • Nov 2008
      • 4

      #3
      Hi pbmods,

      Agree that probably turning off all errors is not what I want..

      I'm not sure if php offers a process ID hook - I can't find one. I looked in the /var/ directory, and the /var/db/ also, but couldn't see anything interesting.

      I tried get_loaded_exte nsions() which "returns the names of all the modules compiled and loaded in the PHP interpreter".
      That didn't help much, as mysql has been enabled, but just doesn't exist.

      Any other ideas why this particular @ doesn't work?

      Thanks.

      Comment

      • Markus
        Recognized Expert Expert
        • Jun 2007
        • 6092

        #4
        Take away the or die() clause at the end of your connection variable.

        Comment

        • AgentSpanky
          New Member
          • Nov 2008
          • 4

          #5
          Hi Markus,

          Yep - done that.

          My problem isn't how to display or handle the error, but rather that it occurs in the first place.
          Any other way of detecting if there is an sql service available that doesn't raise an error when it fails would be ok, too..

          Thanks.

          Comment

          • AgentSpanky
            New Member
            • Nov 2008
            • 4

            #6
            Well, I've given up.
            I'm now just checking which server its on (with a global variable - yuk!) based on it's URL, and determining behaviour based on that.

            Thanks for your comments..

            Comment

            • Markus
              Recognized Expert Expert
              • Jun 2007
              • 6092

              #7
              You could use a try-catch block.

              Comment

              Working...