Erreur fatal en ayant tester un projet wamp/php

[Résolu/Fermé]
Signaler
Messages postés
8
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 février 2016
-
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021
-
L’erreur est ceci:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1049] Base 'sheet' inconnue' in C:\wamp\www\sheet\class\database.class.php on line 48


La ligne 48 est celle ci:
parent::__construct( $dsn, $login, $password, $options );

De Plus voici la programmation
<?php

// Table name
if( !defined('TBL') ){
 define('TBL',true);
 define('TBL_AB','ability');
 define('TBL_ACC','access');
 define('TBL_ATT','attribute');
 define('TBL_BIG','bigfield');
 define('TBL_CLA','classe');
 define('TBL_CLA_AB','classe_ability');
 define('TBL_D','data');
 define('TBL_D_AB','data_ability');
 define('TBL_D_ATT','data_attribute');
 define('TBL_D_BIG','data_bigfield');
 define('TBL_D_I','data_item');
 define('TBL_D_S','data_skill');
 define('TBL_GM_ACC','gm_access');
 define('TBL_GM_ACT','gm_account');
 define('TBL_GM_LOG','gm_log');
 define('TBL_I','item');
 define('TBL_I_CAT','item_category');
 define('TBL_S','skill');
 define('TBL_T','type');
 define('TBL_T_AB','type_ability');
}

class Database extends PDO {
 private static $instance = null;
 private $transaction = false;

 /*


* Constructor

*/
 function __construct( $dsn, $login, $password, $options = array() )
 {
  if ( self::$instance === null ) {
   parent::__construct( $dsn, $login, $password, $options );
   $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   self::$instance = $this;
  }
 }

 /*


* Getter

* @return (Database)

* @throw (Exception) if no database connexion is open

*/
 public static function getDatabase()
 {
  if ( self::$instance !== null )
   return self::$instance;
  else
   throw new Exception( 'No database connexion opened.' );
 }

 public function beginTransaction(){
  $this->transaction = true;
  parent::beginTransaction();
 }

 public function commit(){
  if( $this->transaction === true )
   parent::commit();
 }

 public function rollback(){
  if( $this->transaction === true )
   parent::rollback();
 }
}

?>



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Messages postés
33473
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2021
3 717
Bonjour,

Le message d'erreur semble assez clair

Base 'sheet' inconnue'

Visiblement... la base de données "sheet" ... n'existe pas
As tu bien mis les bonnes informations de connexion à la BDD ????
Messages postés
8
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 février 2016

ah oui j'avais mal configuré ma config
mais maintenant j'ai une erreur de ce type
( ! ) Fatal error: in C:\wamp\www\JasonDavid\class\database.class.php on line 48
( ! ) PDOException: in C:\wamp\www\JasonDavid\class\database.class.php on line 48
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021
461
Comment utilises tu la classe Database ? Il semble que tu instancies la classe puis que tu appels la méthode getDatabase(), dans ce cas la variable self::$instance est alors différente de null et l'exception est levée.

Au passage si tu essayes d'implémenter le pattern singleton, tu dois faire quelques modifications :
- rendre le constructeur en privé (on instancie jamais directement un singleton, on passe par la méthode getInstance)
- instancier l'objet dans la méthode getDatabase (qu'on nomme souvent getInstance dans le pattern singleton)