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.
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.
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.