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 :

Sauvegarder et restaurer une base de données MySQL en PHP


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut Sauvegarder et restaurer une base de données MySQL en PHP
    Bonjour.

    Voici le code que j'ai trouvé sur internet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $mysqlHostName ='localhost';
    $mysqlUserName ='*******';
    $mysqlPassword ='';
    $mysqlDatabaseName ='nom-base';
    $mysqlExportPath ='save-nom-base.sql';
    $command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ' .$mysqlExportPath;
    exec($command,$output=array(),$worked);
       switch($worked){
          case 0:
             echo 'La base de données <b>' .$mysqlDatabaseName .'</b> a été stockée avec succès dans le chemin suivant '.getcwd().'/' .$mysqlExportPath .'</b>';
             break;
          case 1:
             echo 'Une erreur s est produite lors de la exportation de <b>' .$mysqlDatabaseName .'</b> vers '.getcwd().'/' .$mysqlExportPath .'</b>';
             break;
          case 2:
             echo 'Une erreur d exportation s est produite, veuillez vérifier les informations suivantes : <br/><br/><table><tr><td>MySQL Database Name:</td><td><b>'         .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td> <b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>';
            break;
       }
    Message d'erreur "Strict standards: Only variables should be passed by reference in C:\wamp64\www\....\save-nom-base on line 74".

    Le fichier 'save-nom-base.sql' est bien créer dans le même répertoire, mais il est vide ?

    Si je saisi en ligne de commande en tant administrateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\WINDOWS\system32>mysqldump --user='*******'  --password='' --databases infos > save-nom-base.sql
    Voici le message renvoyé :

    'mysqldump' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.

    Je ne comprends pas pourquoi ?

    Avez-vous une explication svp.

    Merci d'avance pour vos réponses.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    re

    Ligne 8 équivalente à 74 :
    Message d'erreur à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec($command,$output=array(),$worked);
    Pour info, je travaille avec Wampserver.

    Le but étant de créer une page dans laquelle l'utilisateur cliquera sur un bouton pour sauvegarder la base de données.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonsoir

    Je ne suis pas un expert en PHP, oubliez svp l'erreur j'ai commise et ma confusion à essayer d'exécuter la commande mysqldump.

    J'ai supprimer une variable inutile, et là plus de message d'erreur.

    J'avoue que j'ai pioché le code et utilisé tel quel !

    Mais le fichier sql sauvegardé est désespérément vide ?

    Un petit coup de pouce serait le bien venu.

    Merci @+.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour à tous oups pas de réponse.

    De mon côté j'ai cherché sur internet et testé plusieurs solutions :

    1° avec la console CMD quand je tape la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\wamp64\bin\mysql\mysql5.7.14\bin mysqldump.exe -u root -p MaBase > C:\wamp64\www\Bacckup_bdd\save_MaBase_26-08-19.sql
    Ça fonctionne très bien et le fichier contient toutes les informations.

    2° si j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $mysqlHostName ='localhost';
       $mysqlUserName ='root';
       $mysqlPassword ='';
       $mysqlDatabaseName ='MaBase';
       $mysqlExportPath ='save_MaBase.sql';
       $command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ' .$mysqlExportPath;
       exec($command);
    Le fichier est bien crée mais il est vide.

    C'est désespérant existe-t-il une solution ou pas.

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut

    as-tu rajouté C:\wamp64\bin\mysql\mysql5.7.14\bin dans le path de windows ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour rawsrc

    Merci de t'intéresser à cette discussion.

    J'ai bien ajouté C:\wamp64\bin\mysql\mysql5.7.14\bin dans le path de windows 10.

    Ça ne résout pas le problème.

    Je continu de cherché sur internet et testé plusieurs solutions :

    1° avec la console CMD :
    Je saisi d'abord cd C:\wamp64\bin\mysql\mysql5.7.14\bin
    Et en suite mysqldump.exe -u root -p MaBase > C:\wamp64\www\Bacckup_bdd\save_MaBase_26-08-19.sql
    Ça fonctionne très bien le fichier renseigné est créé dans le même répertoire .

    2° dans un fichier PHP :
    system("C:\wamp64\bin\mysql\mysql5.7.14\bin mysqldump.exe -u root -p MaBase > save_MaBase_26-08-19.sql");
    Ou
    exec("C:\wamp64\bin\mysql\mysql5.7.14\bin mysqldump.exe -u root -p MaBase > save_MaBase_26-08-19.sql");
    Dans ces 2 cas le fichier est créé dans le même répertoire mais il est vide.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour à tous

    Ça y est j'ai une petite piste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
       $host="localhost"
       $user="root"; 
       $pass=""; 
       $db="infos";
       $backup=$db."_save_".@date("Y-m-d").".sql";
       $command = "mysqldump --host=$host --user=$user --password=$pass $db > $backup";
     
       //echo $backup .'<br>';
       //echo system($command); 
       system($command, $return_val); 
       echo $return_val.'<br>'; 
       if($return_val==0) echo 'Succes!'; else echo 'Echec';
     ?>
    Mais ça bug ???? à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $command = "mysqldump --host=$host --user=$user --password=$pass $db > $backup";

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok, mets toi sur un lecteur différent de C: et tape juste ta commande mysqldump.exe -u root -p MaBase > C:\wamp64\www\Bacckup_bdd\save_MaBase_26-08-19.sqlça fonctionne ?

    Dans ta commande PHP pense à doubler les \ dans le chemin d'export

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    J'ai oublié de préciser quel type d'erreur :

    Notice: Undefined variable: host in C:\wamp64\www\...\... on line 8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $command = "mysqldump --host=$host --user=$user --password=$pass $db > $backup";
    Par contre si je remplace --host=$host par --host=loccalhost ça fonctionne ????

    Je vais tester ce que tu propose.

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Quel tête il a le host cible ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Comme je le disais dans mon premier post j'ai pas une connaissance d'expert en PHP.

    D’où ma question : c'est quoi
    Quel tête il a le host cible ?
    Pouvez-vous m'expliquer en quelques mots de quoi il s'agit ?

    Merci d'avance @+.

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    OK, le host doit correspondre à un nom d'une machine : 127.0.0.1 ou localhost ou ce que tu veux... (adresse ip...)

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour
    Adresse IPv4 : 192.168.1.15, nom de la machine : Dylan-HP

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/10/2012, 15h19
  2. Réponses: 3
    Dernier message: 19/03/2012, 02h24
  3. initialiser, sauvegarder et restaurer une base de données
    Par ing1312 dans le forum Bases de données
    Réponses: 10
    Dernier message: 19/07/2009, 21h52
  4. Problème de copie d'une base de données MySQL avec PHP
    Par rheem dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/10/2007, 14h52
  5. Réponses: 1
    Dernier message: 30/01/2007, 14h07

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