php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #31745 Exception doens't catch connection error
Submitted: 2005-01-28 16:27 UTC Modified: 2005-01-28 21:24 UTC
From: tril2632 at hotmail dot com Assigned:
Status: Not a bug Package: MySQLi related
PHP Version: 5.0.3 OS: Linux Debian
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: tril2632 at hotmail dot com
New email:
PHP Version: OS:

 

 [2005-01-28 16:27 UTC] tril2632 at hotmail dot com
Description:
------------
Hello

The problem is that exception are not catching connection problems when instanciate the mysqli class.

Reproduce code:
---------------
<?php

/* Create custom exception classes */ 
class ConnectException extends Exception {} 
class QueryException extends Exception {} 


class example_mysqli extends mysqli 
{ 
  function __construct($adr, $login, $mdp, $nom_bd) 
  { 
try{
  /* Pass all arguments passed to the constructor on to the parent's constructor */ 
    $args = func_get_args(); 
    // OK if(!@parent::__construct($adr, $login, $mdp, $nom_bd))
    if(!parent::__construct($adr, $login, $mdp, $nom_bd))
    {
      throw new ConnectException(mysqli_connect_error(), mysqli_connect_errno());    	
    }

   /* Throw an error if the connection fails */ 
    if(mysqli_connect_error()){ 
      throw new ConnectException(mysqli_connect_error(), mysqli_connect_errno()); 
    } 
   }
   catch (Exception $e)
   {
   	throw new ConnectException(mysqli_connect_error(), mysqli_connect_errno()); 
   }
  } 

  function query($query) 
  { 
    $result = parent::query($query); 
    if(mysqli_error($this)){ 
      throw new QueryException(mysqli_error($this), mysqli_errno($this)); 
    } 
    return $result; 
  } 
} 

try { 
  $my = new example_mysqli('loclhost','root', '', 'test'); 
  $result = $my->query("SELCT NOW()"); 

} 
catch(Exception $exception) { 
  echo "Connection Error\n"; 
 
} 
catch(QueryException $exception) { 
  echo "Query Error\n"; 

} 
/* Handle exceptions that we weren't expecting */ 
catch(Exception $exception) { 
  echo "Who was that masked exception?\n"; 

} 

$result->close(); 
$my->close(); 

?>


Expected result:
----------------
it should print me "connection Error" 



Actual result:
--------------
it always return this error : 


 mysqli::mysqli() [function.mysqli]: Unknown MySQL server host 'loclhost' (11001) in c:\wamp\www\wmi\mysqli.php on line 16

Connection Error

With exception php error should NOT be display only the message in the "catch" should appear !

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-01-28 21:24 UTC] tony2001@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

Using exceptions doesn't mean that all warnings/notices/etc. are supressed.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Fri May 09 09:01:26 2025 UTC