Probleme de connection

Lwss Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 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.
A voir également:

3 réponses

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
Lwss
 
Merci pour la correction
0
Lwss
 
Donc pour vous si je changeais seulement ca tout va bien aller?
#le père?
0
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
Lwss
 
Si j enlève le$ ca va faire un grand probleme
M merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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