Pages : 1
#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
Pages : 1