Bug PDO

Par TBMaster59, il y a 8 ans


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

Carouge10, il y a 8 ans

Bonjour,
A quoi correspond la ligne 57 ?

TBMaster59, il y a 8 ans

Bonjour,
La ligne 57 correspond à :

$pdo = new PDO('mysql:dbname='.$this->db_name.';host='.$this->db_host, $this->db_user, $this->db_pass);
Carouge10, il y a 8 ans

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.

TBMaster59, il y a 8 ans

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

Carouge10, il y a 8 ans

D'accord, As-tu activé PDO ?

TBMaster59, il y a 8 ans

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

Carouge10, il y a 8 ans

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;
TBMaster59, il y a 8 ans

Le résultat :

mysql:dbname=data_test;host=localhost
Warzik, il y a 8 ans

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

TBMaster59, il y a 8 ans

ç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 :)