Dump bdd mysql avec php
harderpod
Messages postés
326
Date d'inscription
Statut
Membre
Dernière intervention
-
harderpod Messages postés 326 Date d'inscription Statut Membre Dernière intervention -
harderpod Messages postés 326 Date d'inscription Statut Membre Dernière intervention -
Bonjour, voila après plusieurs de recherche avec google et forum en veut tu en voila ! après plusieurs litre de café dans la semaine, je me décide de poser ma question puisque je n'y arrive pas.
je voudrais pour une application php en local, Que l'utilisateur puisse faire une sauvegarde de sa base de donner facilement.
jusqu'à présent tous mes essais retourne un fichier vide. voici le script que j'utilise a savoir que j'ai fais une copie de mysqldump.exe a la racine du site, puisque en utilisant celui ce trouvant dans programme files sa ne fonctionne pas non plus.
De ce que j'ai compris a cause de l'espace entre programme et files, on doit écrire c:\PROGAM~1\wamp ...........
même comme sa fonctionne pas non plus.
<?php
$host = "localhost";
$user = "root";
$pass = ""; // On définit les infos de la base de données
$db = "topaze";
$date = date("d-m-Y"); // On définit le variable $date (ici, son format)
$backup = $db."bdd-backup_".$date.".sql";
// Utilise les fonctions système : MySQLdump
$command = "D:\Sites\topaze\mysqldump -h $host -u $user -p$pass $db > $backup";
system($command);
// Démarre la procédure de téléchargement
$taille = filesize($backup);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/sql");
header("Content-Disposition: attachment; filename=$backup;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($backup);
?>
sur phpmyadmin j'arrive a sauvegarder en .sql et a restaurer la bdd aussi.
j'ai essayer de mettre des espace entre -h$host et le reste de ne pas en mettre.
j'ai essayer d'écrire la commande complète sans passer par des variables.
bref un petit coup de main pour mieux comprendre tout sa m'aiderai vraiment.
plonger dans les méandres de la curiosité
:) ;) ;( =( =) :)
je voudrais pour une application php en local, Que l'utilisateur puisse faire une sauvegarde de sa base de donner facilement.
jusqu'à présent tous mes essais retourne un fichier vide. voici le script que j'utilise a savoir que j'ai fais une copie de mysqldump.exe a la racine du site, puisque en utilisant celui ce trouvant dans programme files sa ne fonctionne pas non plus.
De ce que j'ai compris a cause de l'espace entre programme et files, on doit écrire c:\PROGAM~1\wamp ...........
même comme sa fonctionne pas non plus.
<?php
$host = "localhost";
$user = "root";
$pass = ""; // On définit les infos de la base de données
$db = "topaze";
$date = date("d-m-Y"); // On définit le variable $date (ici, son format)
$backup = $db."bdd-backup_".$date.".sql";
// Utilise les fonctions système : MySQLdump
$command = "D:\Sites\topaze\mysqldump -h $host -u $user -p$pass $db > $backup";
system($command);
// Démarre la procédure de téléchargement
$taille = filesize($backup);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/sql");
header("Content-Disposition: attachment; filename=$backup;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($backup);
?>
sur phpmyadmin j'arrive a sauvegarder en .sql et a restaurer la bdd aussi.
j'ai essayer de mettre des espace entre -h$host et le reste de ne pas en mettre.
j'ai essayer d'écrire la commande complète sans passer par des variables.
bref un petit coup de main pour mieux comprendre tout sa m'aiderai vraiment.
plonger dans les méandres de la curiosité
:) ;) ;( =( =) :)
A voir également:
- Dump bdd mysql avec php
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Crash dump - Forum Windows 7
- Mysql error 2002 ✓ - Forum Linux / Unix
1 réponse
<?php function dump($ignore) { $server = '*********'; $database = '*********'; $user = '*********'; $password = '*********'; //Connexion à la base $db = mysql_connect($server, $user, $password) or die(mysql_error()); mysql_select_db($database, $db) or die(mysql_error()); //on récupère la liste des tables de la base de données //$tables = mysql_list_tables($database, $db) or die(mysql_error()); $sql = 'SHOW TABLES FROM '.$database; $tables = mysql_query($sql) or die(mysql_error()); // si on ne veut pas récupérer les $ignore premières tables for ($i=0; $i<$ignore; $i++) ($donnees = mysql_fetch_array($tables)); // aller on boucle sur toutes les tables while ($donnees = mysql_fetch_array($tables)) { // on récupère le create table (structure de la table) $table = $donnees[0]; $sql = 'SHOW CREATE TABLE '.$table; $res = mysql_query($sql) or die(mysql_error().$sql); if ($res) { $backup_file = '../temp/backup_' . $table . '.sql.gz'; $fp = gzopen($backup_file, 'w'); $tableau = mysql_fetch_array($res); $tableau[1] .= ";\n"; $insertions = $tableau[1]; gzwrite($fp, $insertions); $req_table = mysql_query('SELECT * FROM '.$table) or die(mysql_error()); $nbr_champs = mysql_num_fields($req_table); while ($ligne = mysql_fetch_array($req_table)) { $insertions = 'INSERT INTO '.$table.' VALUES ('; for ($i=0; $i<$nbr_champs; $i++) { $insertions .= '\'' . mysql_real_escape_string($ligne[$i]) . '\', '; } $insertions = substr($insertions, 0, -2); $insertions .= ");\n"; gzwrite($fp, $insertions); } } // fin if ($res) mysql_free_result($res); gzclose($fp); } return true; } //appel de la fonction $dump = dump(0); ?>
puis par la suite je voudrais rajouter au script l'envoie du dump par mail sur ma boite mail au cas ou son pc grille ou son disque dur pour pouvoir restaurer la bdd en cas de pepin.
je testerais mais je ne croit pas que cela soit adpater a mon cas.