Probleme de connection

Lwss Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Warning: PDO::query(): SQLSTATE[3D000]: Invalid catalog name: 1046 Aucune base n'a été sélectionnée in C:\wampk\www\leader\functions\home.func.php on line 7
et mon code
<?php
$dbhost = "localhost";
$dbname = "blog";
$dbuser = "root";
$dbpassword = ""; 
 try{
 $db = new PDO('mysql:host='.$dbhost.';$dbname='.$dbname,$dbuser,$dbpassword,array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
}catch(PDOException $e){
 die('une erreur est survenue lors de la connexion a la base de donnee... ');
}
?>


Edit: ajout des balises de code.

3 réponses

  1. Utilisateur anonyme
     
    Bonjour

    $dbname, c'est le nom de ta base de données. Mais dans la chaîne de connexion (et non pas connection), le mot-clé pour donner le nom de la base de données, c'est dbname, pas $dbname. Relis bien ta requête en la comparant à l'exemple dont tu es parti.
    Comprends bien la différence entre le nom de variable $dbname que tu as choisi (tu aurais pu prendre $toto) et le mot dbname qui fait partie de la syntaxe de la requête, et que tu n'as pas le droit de modifier.
    0
    1. Lwss
       
      Merci pour la correction
      0
    2. Lwss
       
      Donc pour vous si je changeais seulement ca tout va bien aller?
      #le père?
      0
    3. Utilisateur anonyme
       
      Le reste ne me choque pas, mais je ne te garantis pas qu'il n'y a pas d'autres erreurs. Dans cette partie de ton code ou une autre. Tu ne peux pas essayer ?
      0
  2. Lwss
     
    Si j enlève le$ ca va faire un grand probleme
    M merci
    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,
    Ben si.. il faut justement que tu retires le $ devant le premier dbname....
    Essaye ceci
    <?php
    $dbhost = "localhost";
    $dbname = "blog";
    $dbuser = "root";
    $dbpassword = ""; 
    
    try{
       $db=new PDO('mysql:host=localhost;'.$dbhost .'='.$dbname .'; charset=utf8',$dbuser , $dbpassword );
       // Activation des erreurs PDO
       $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
       $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
        die('Erreur : ' . $e->getMessage());
    }
    


    Au passage, lorsque tu écrieras des requêtes.. pense également à les mettre dans des blocs TRY/CATCH pour voir les éventuelles erreurs..
    Comme ceci:
    //préparation de la requête et des variables
     $sql = "INSERT INTO matable (champ1,champ2)   VALUES (:valeur1,:autrevaleur)";
     $datas = array(':valeur1'=>$valeur1, ':autrevaleur'=>$toto);
    
    //Execution de la requete
    try{
      $requete = $db-> prepare($sql) ;
      $requete->execute($datas) ;
    }catch(Exception $e){
      // en cas d'erreur :
       echo " Erreur ! ".$e->getMessage();
       echo " Les datas : " ;
       print_r($datas);
    }
    

    0