PDO et wampserver

Résolu
Bonjour,
J'ai installé sur mon PC wampserver 2.5 et j'ai une méthode qui me permet de me connecter à ma BDD MySql en utilisant PDO, cela me retourne une erreur....
Warning: PDO::__construct(): in C:..............
Impossible de se connecter à la base de donnée
Erreur : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: H�te inconnu.
N° : 2002

Dans les extension PHP de wampserver il est bien coché "php_pdo_mysql" l'icone de wamp est verte serveur en ligne et pourtant "impossible de me connecter à ma BDD".
Pouvez-vous s'ils vous plait me donner un coup de main pour résoudre ce problème.
je vous remercie.
voici le fonction de connexion
function bdd() {

    //L'adresse IP du serveur sous lequel le script courant est en train d'être exécuté.
    if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
        //données pour la connexion à la base de données local
        $PARAM_hote        	='localhost';     	//nom du serveur mysql
        $PARAM_nom_bdd     ='mon_site'; 	//le nom de la base de données
        $PARAM_utilisateur 	='root';          	//login
        $PARAM_mot_passe   	='';              	//mot de passe pour se connecter

    	try {
            //connexion à la BDD (Création d'une instance de la classe PDO)
            //On cré l'objet $bdd à l'aide de la commande new suivi du nom de la classe
            $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe);
            $bdd->exec("SET CHARACTER SET utf8");
            $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	}

    	catch(Exception $e) {
            //sinon on affiche l'erreur
            echo 'Impossible de se connecter à la base de donnée</br>';
            echo 'Erreur : ' .  $e->getMessage() . '<br />';
            echo 'N° : ' .      $e->getCode();
    	}
    }
}

7 réponses

  1. Bonjour

    Très étonnant, il ne connaît pas 'localhost'. Pourtant tout à l'air correct.
    Tu peux mettre le fichier sur cjoint.com pour vérifier s'il n'y a pas un caractère invisible qui se glisse quelque part ?
    1. Aucun caractère caché, chez moi ton script reconnaît bien 'localhost'.

      Le nom de fichier et la ligne du message d'erreur, que tu as masqués, correspondent bien à la ligne 15 de ce fichier ?

      Edit:
      Sait-tu aller voir dans ton fichier hosts ? C'est lui qui définit le localhost.
      1. En fait je ne comprends pas car je vais sur mes projets et je clique sur mon site j'ai bien cette URL "http://localhost/mon_site/"
        et sur la page d'accueil de wampserveur phpmyadmin j'ai bien accès à ma BDD

        J'ai testé quelque chose en fait sur mon hébergeur avec ce même fichier de connexion tout marche normalement c'est simplement en local que c'est le bazarre, sinon oui je peux aller voir sur le fichier hosts si tu peux me guider un peu
        Merci
        1. j'ai également une deuxième erreur je ne sais pas si c'est lié

          Notice: Undefined variable: bdd in C.............

          c'est la ligne où il y a return
          return $bdd;
          1. le "undefined variable : bdd" est une conséquence de l'autre erreur.
            Donne les messages d'erreur complets avec le nom de fichier et le numéro de ligne.
            Pour le fichier hosts, ça ne sert à rien : si ton PC connaît bien "http://localhost/mon_site/" et que de plus phpmayadmin marche.
        2. Bonjour,
          En fait j'ai fait ça et tout fonctionne correctement c'est vraiment incroyable
          <?php
          function bdd() {
          
                  $PARAM_hote        	='localhost';     	
                  $PARAM_nom_bdd     	='mon_site'; 	
                  $PARAM_utilisateur 	='root';          	
                  $PARAM_mot_passe   	='';              	
          
              	try {
                      $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe);
                      $bdd->exec("SET CHARACTER SET utf8");
                      $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
                      $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
              	}
          
              	catch(Exception $e) {
                      echo 'Impossible de se connecter à la base de donnée</br>';
                      echo 'Erreur : ' .  $e->getMessage() . '<br />';
                      echo 'N° : ' .      $e->getCode();
              	}
          	return $bdd;
          }
          ?>
          

          je te remercie pour ton aide.
          1. "C'est vraiment incroyable" n'est pas une explication.
            Tu t'es contenté de retirer le test de $_SERVER['SERVER_ADDR'] ? Je n'y crois pas une seconde, il y a autre chose.