Gestion des erreurs avec mysqli.

Signaler
Messages postés
28
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
4 juillet 2010
-
Messages postés
28
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
4 juillet 2010
-
Bonjour,

j'apprends actuellement PHP et je rencontre un petit problème.

J'ai reproduit l'exemple de la doc PHP pour créer un objet de connexion à MySQL :
class jfi_mysqli extends mysqli {

        // Parametres de connexion a  MySQL
        private $_dbHost  =  "localhost";
        private $_dbUser = "radius";
        private $_dbPass  = "XXXX";
        private $_dbName  = "radius";

        public function __construct() {
                parent::__construct($this->_dbHost, $this->_dbUser, $this->_dbPass, $this->_dbName);
            
            if (mysqli_connect_error()) {
                die('Erreur de connexion (' . mysqli_connect_errno() . ') '
                        . mysqli_connect_error());
            }

        }

Mon objet fonctionne très bien quand tout est OK. Mais en cas d'erreur de connexion, j'ai le message suivant :
Warning: mysqli::mysqli() mysqli.mysqli: (28000/1045): Access denied for user 'radius11'@'localhost' (using password: YES) in /var/www/admin.vfispot.com/inc_mysql.php on line 47
Erreur de connexion (1045) Access denied for user 'radius11'@'localhost' (using password: YES)

Alors que je devrais gérer l'erreur après le IF.

J'ai essayé avec TRY et j'ai le même problème :

class jfi_mysqli extends mysqli {

        // Parametres de connexion a  MySQL
        private $_dbHost  = "localhost";
        private $_dbUser = "radius11";
        private $_dbPass  = "XXXX";
        private $_dbName  = "radius";

        public function __construct() {
   try {
                parent::__construct($this->_dbHost, $this->_dbUser, $this->_dbPass, $this->_dbName);
   } catch (MySQLExeption $e) {
echo "Erreur de connexion : ". $e->RetourneErreur() ."
";
                die('Erreur de connexion (' . mysqli_connect_errno() . ') '
                        . mysqli_connect_error());
   }
if (mysqli_connect_error()) {
                die('Erreur de connexion (' . mysqli_connect_errno() . ') '
                        . mysqli_connect_error());
            }

        }

    }    

 /**
  * Gestion des erreurs avec les exeptions
  */
class MySQLExeption extends Exception
{
public function __construct($Msg) {
        	parent :: __construct($Msg);
}
 
public function RetourneErreur() {
$msg = '
 ' . $this->getMessage() . ' ';
$msg . = ' Ligne : ' . $this->getLine() . '
';
return $msg;
}
}

C'est comme si l'erreur de conexion à MySQL n'était j'aimais interceptée.

Quelqu'un peut-il me dire où j'ai fait une erreur ? Merci d'avance.

Cordialement,

Jérôme

4 réponses

Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Tu as une erreur d'authentification sur ta base et PHP fait son boulot pour te prévenir, essaie avec un login/password d'un root pour tester.
tu as essayé de te connecter au serveur mysql en ligne de commande via 'mysql -uroot -p' ?? normalement il te demande le mot de passe de Root.
S.
Messages postés
28
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
4 juillet 2010

Bonjour,

Merci pour ta réponse. Mais, j'ai dù mal m'exprimer

Mon problème n'est pas de me connecter à la base de données. Cela fonctionne très bien.
C'est d'être capable d'intercepter les erreurs PHP/MySQL en cas de problème de connexion.

Merci pour vos réponses et votre aide

A+

Jérôme
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
C'est normal ton '} catch (MySQLExeption $e) {'
au lieu de } catch (MySQLException $e) { ?
S.
Messages postés
28
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
4 juillet 2010

Hello,

En fait, MySQLExeption était une fonction perso.

Mais même en utilisant MySQLException, je n'intercepte pas les erreurs.

Cela peut-il être dù à un problème de configuration de mon serveur PHP ?

Merci de ton aide

Amicalement,

Jérôme