IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Dupliquer une BDD avec Php


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut Dupliquer une BDD avec Php
    Bonjour,
    Je développe une application avec plusieurs utilisateurs,
    je pensais:
    - Les faire accéder à la même base de données avec une colonne id_user pour chaque table,
    - Mais ca serait plus simple de créer une base pour chacun
    - En dupliquant une base type

    Par PhpMyAdmin, c'est pas bon pour le cas de figure.
    Car faudrait que ca se fasse en ligne.

    A moins de
    (New_bd = Nouvelle Bd, Ex_bd = Bd à dupliquer)

    1- Créer une base New_bd
    2- Ouvrir chaque tables de Ex_bd
    3- Lire chaque colonne et ligne
    4- Ecrire les en têtes et les lignes dans la New_bd

    Sinon, j'ai bien sur vu qu'il y avait dump mais je n'ai pas l'impression qu'on l'utilise en Php.

    Bonne journée.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut Duplicate Database
    Pour ceux qui en aurait besoin,
    dupliquer une base avec php.
    1- La créer:
    CREATE DATABASE `Nouvelle_bd` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
    2- Renommer chacune des tables
    RENAME TABLE `Ancienne_db`.`table_1`
    TO `Nouvelle_db`.`table_1`;
    RENAME TABLE `Ancienne_db`.`table_2`
    TO `Nouvelle_db`.`table_2`;

    Bises...

  3. #3
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    tu aurais pus faire un exec dump de ta base non
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut
    Bonjour,
    Pour le dump j'ai pas réussi à l'intégrer dans du php
    alors j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $list_table='table1/table2/table3'; 
    $db_name=$_SESSION['user']['db_name'];
    $list_table=explode('/',$list_table);
     
            foreach ($list_table as $key => $value) {
                try {
                        $sql = "CREATE TABLE $db_name.$value AS SELECT * FROM `BD_originelle`.$value WHERE 1=0"; 
                        $conn->exec($sql);
                        $whattosee.= "<b>Table ".$value." created successfully</b> / ";
                    }
                catch(PDOException $e)
                    {$whattosee.='Error table '.$value.'  '.$e->getMessage().'<br/>';$what_to_send.='Error table '.$value.'  '.$e->getMessage().'<br/>';$error_table=1;}
                }
    WHERE 1=0 ne prend aucune ligne
    $whattosee permet de voir ce qui s'est passé dans une div en bas de page
    $what_to_send envoi un mail

    Vous en pensez quoi ?
    Notamment au niveau securité.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut
    Il y a tout de même un probleme,
    je n'ai pas l'impression que ce code récupère la primary key, ni l'auto incrémente.

    ... 1/2 heure plus tard
    dans la boucle j'ai ajouté
    $sql = "ALTER TABLE $db_name.$value ADD PRIMARY KEY(`id`), MODIFY COLUMN `id` INT auto_increment";
    $conn->exec($sql);

  6. #6
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    un create as ne te fait qu'une copie de table basée sur les données pas sur l'intégrité de ta table.
    Il faut faire un like pour créer la table et après un insert into macopy select * from origine

    http://www.geeksengine.com/database/...e-table-as.php
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut
    Ah, c'est donc pour ça.
    Super merci pour le lien,
    je vais étudier ca.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo