Bonjour,

Voila je rencontre un petit problème avec mon code quand j'essaye de me connecte à ma base de données MySQL.

Ce que je fais

Je me connecte à ma base de données en utilisant le PDO mais en retour j'ai une erreur :

Fatal error: in C:\MAMP\htdocs\php\classes\MySQL\DataBase.php on line 57

Voilà mon code :

private function getPDO(){
    if ($this->pdo === null) {
        try {
            $pdo = new PDO('mysql:dbname='.$this->db_name.';host='.$this->db_host, $this->db_user, $this->db_pass);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (Exception $e) {
            die('Une erreur est survenue lors de la connexion à la base de données.');
        }
        $this->pdo = $pdo;
    }
    return $this->pdo;
}

J'ai recherché partout, je me suis relu beaucoup trop de fois :') Pouvez-vous m'aider à résoudre cette erreur?

10 réponses


TBMaster59
Auteur
Réponse acceptée

ça y j'ai trouvé mon erreur :

$pdo = new PDO('mysql:dbname='.$this->db_name.';host='.$this->db_host.':8889', $this->db_user, $this->db_pass);

Comme j'utilise un port spécial, j'ai oublié de la précisé. Merci pour ton aide quand même :)

Bonjour,
A quoi correspond la ligne 57 ?

Bonjour,
La ligne 57 correspond à :

$pdo = new PDO('mysql:dbname='.$this->db_name.';host='.$this->db_host, $this->db_user, $this->db_pass);

Try catch c'est bien, et c'est encore mieux quand on utilise à fond.
Ajoute cette ligne dans le catch avant ton die :

echo 'Connexion échouée : ' . $e->getMessage();

Et dit moi si tu as un message.

Oui c'est vrai :') sinon aucun message toujours cette même erreur.

D'accord, As-tu activé PDO ?

Oui les extensions PDO sont toutes actives dans le php.ini

Pour tester, et si je peux avoir ces infos.
Ajoute cete ligne juste avant le "new PDO" :

echo 'mysql:dbname='.$this->db_name.';host='.$this->db_host;

Le résultat :

mysql:dbname=data_test;host=localhost

Salut,
après le $this->db_host, tu as oublié de refermer avec une accolade.