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
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
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-2024 The PHP Group
All rights reserved.
Last updated: Mon Nov 11 17:01:29 2024 UTC