Bonjour à tous,

Je cherche à créer un script me permettant de créer une base de donnée si elle n'existe pas et si elle existe de m'y connecter ensuite.

Comment tester si une bdd existe déja ???

<?php
    //Connexion à la base de données
    try{
    $host = "host:***;";
    $base = "";
    $user = "***";
    $mdp = "***";

    $db = new PDO('mysql:'.$host.''.$base.';charset=UTF8;', ''.$user.'', ''.$mdp.'');
    $db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Connexion à la base de donnée réussie";
    }catch(Exception $e){
        echo "Aie, erreur : $e->getMessage";
    }

    //Création si nécessaire de notre base de donnée
    $db->exec('CREATE DATABASE espace_membre');
    echo "Base de donnée créée";
    //Sinon on continue

    ?>

5 réponses


Lartak
Réponse acceptée

Si tu peux créer une base de données de cette manière, essaies tout simplement quelque chose du style :

if ($db->exec('CREATE DATABASE IF NOT EXISTS espace_membres')) {
    $db_create = "CREATE TABLE `espace_membres`.`membres` ( `id` INT NOT NULL AUTO_INCREMENT , `pseudo` VARCHAR(255) NOT NULL , `mail` VARCHAR(255) NOT NULL , `password` TEXT NOT NULL , PRIMARY KEY (`id`)) ENGINE = MyISAM";
    $db->exec($db_create);
}

Bonsoir.
Que je sache, il est nécessaire d'indiquer le nom d'une base de données pour établir une connexion avec PHP, je crains donc que tu ne puisse pas créer de base de données avec PHP et que tu sois obligé soit de créer la base de données manuellement où de créer un script qui automatise la création de la base de données en ligne de commandes via les commandes SQL.

Azee
Auteur

Bonsoir Lartak, en n'indiquant pas de nom de base de donnée, cela me permet de créer ma base ensuite avec cette ligne :

$db->exec('CREATE DATABASE espace_membre');
    echo "Base de donnée créée";

Mais je cherche à savoir si on peut tester l'existence de notre base de donnée pour faire un if dans lequel on rentrerai si elle n'existe pas .

PS : Mon code marche pour créer une database.
Je créé ensuite une table via ce code :

    $db->exec('CREATE DATABASE espace_membres');
    echo "Base de donnée créée";
    $db_create = "CREATE TABLE `espace_membres`.`membres` ( `id` INT NOT NULL AUTO_INCREMENT , `pseudo` VARCHAR(255) NOT NULL , `mail` VARCHAR(255) NOT NULL , `password` TEXT NOT NULL , PRIMARY KEY (`id`)) ENGINE = MyISAM";
    $db -> exec($db_create);
Azee
Auteur

Exact, merci beaucoup Lartak !!!

Tu peux te connecter à la base nommée 'mysql' et lancer la commande "SHOW DATABASES;"