Bonjour...
Finalement je me suis débrouillée comme ça, mais je ne sais pas si ça peut se faire ainsi. J'ai fait une méthode sans les paramètres de la base, ce qui me permet de vérifier si elle existe, comme ça :
Code PHP :
$pdo = PDO2::getBase();
$requete = 'CREATE DATABASE IF NOT EXISTS '.DBNAME.' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci';
$teste = $pdo->prepare($requete)->execute();
//si connexion impossible, db existe pas
if($teste === true)
{
//creation de base et tables associées
}
else
die();
J'ajoute juste avant de mettre ma classe singleton que cette page et cette fonction ne servent qu'une fois.
et le singleton... pour n'avoir qu'une connexion
<?php
//SINGLETON PR PDO
class PDO2 extends PDO
{
private static $_instance;
/* CONSTRUCTEUR : héritage public obligatoire par héritage de PDO */
public function __construct( )
{
}
// End of PDO2::__construct() */
/* SINGLETON : getInstance */
public static function getInstance()
{
if (!isset(self::$_instance))
{
try
{
//CONNEXION
self::$_instance = new PDO(DSN, USER, PASSWORD);
}
catch (PDOException $e)
{
print 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode().'<br />';
echo 'Ligne n° : '.$e->getLine();
die();
}
}
return self::$_instance;
}
// End of PDO2::getInstance() */
/* getBase */
public function getBase()
{
try
{
//CONNEXION
$instance = new PDO(DRIVER.':host='.HOST, USER, PASSWORD,
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (PDOException $e)
{
print 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode().'<br />';
echo 'Ligne n° : '.$e->getLine();
die();
}
return $instance;
}
}
merci de ton aide. :)