Hello
I try to handle mysqli exception.
After reading this article http://www.zend.com/php5/articles/php5-mysqli2.php?article=php5-mysqli2&kind=php5&id=5168&open=&anc=0&view=1 I have try the code of the author but it didn't work !
When you try to instanciate the mysqli class by doing :
parent::__construct($adr, $login, $mdp, $nom_bd)
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 in other language like ASP.NET it works well, it should print me only "Connection Error" but he doesn't
How to handle mysql exception correctly with php ? :rolleyes:
<?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()");
var_dump($result->fetch_row());
}
catch(Exception $exception) {
echo "Connection Error\n";
//var_dump($exception->getMessage());
}
catch(QueryException $exception) {
echo "Query Error\n";
//var_dump($exception->getMessage());
}
/* Handle exceptions that we weren't expecting */
catch(Exception $exception) {
echo "Who was that masked exception?\n";
//var_dump($exception->getMessage());
}
$result->close();
$my->close();
?>