Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/09/2009, à 22:40

jfitoussi

Gestion des erreurs PHP avec mysqli.

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() ."<br />";
                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 = '<div><strong>' . $this->getMessage() . '</strong>';
		$msg .= ' Ligne : ' . $this->getLine() . '</div>';
		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


Jérôme
iMac pour la maison
Ubuntu Server 12.04.1 LTS pour travailler

Hors ligne

#2 Le 24/09/2009, à 14:21

Tabouet

Re : Gestion des erreurs PHP avec mysqli.

Bonjour,

Si tu débutes, je trouve ton code un peu compliqué pour une simple connexion à une base de données...
Voici plus simple :

/* parametres de connexion au serveur mysql */

$serveur="localhost";
$login="radius";
$motdepasse="XXXX";
$base="cm249703";

/* nom de la base de données */

$base = "radius"

/* choix de la base de données*/

mysql_select_db($base);

$connect = mysql_connect($serveur,$login,$motdepasse);

/* si la connexion ne marche pas, on affiche "Problème de connexion à Mysql" suivi de l'erreur sql */

if(!$connect) 
	{
	echo "Problème de connexion à Mysql: ".mysql_error();
	}

Par contre, c'est un code "de base".
Dans ton code tu veux utiliser de l'objet, c'est pas vraiment utile pour une simble connexion à SQL.

Selon moi ton erreur est due à un problème dans le mot de passe ou dans le pseudo d'accés à SQL via localhost.

A bientôt,
Alexis


Histoires d'hier et d'aujourd'hui:
http://www.genealexis.fr/

Hors ligne