Bonjour,
Voila j'ai récupérer un script sur le site pour sauvegarder ma BDD. J'ai modifié le script pour enlever les fonctions envoi par mail et FTP. J'ai aussi modifier $sql_header pour y rajouter des infos style phpmyadmin.
Les sauvgardes fonctionnent mais pas leur restauration.
#1064 - Erreur de syntaxe pr?s de 'CREATE TABLE `referer` (
`id` smallint(4) NOT NULL auto_inc' ? la ligne 21
Voici le script:
// DUMP SQL
function saveDB($mysql_array = array()){
$mysql_host = $mysql_array[0];
$mysql_user = $mysql_array[1];
$mysql_password = $mysql_array[2];
error_reporting(0);
$err_msg = '';
$maxinsert = 500;
if (!empty($mail_array)){
$mail = $mail_array[0];
$attachement = $mail_array[1];
}
if(!$link = mysql_connect($mysql_host,$mysql_user,$mysql_password))
$err_msg .= 'Impossible de se connecter à '.$mysql_host."\n";
else{
$testfile = 'backup_sql/'.uniqid(mt_rand()).'.tmp';
if (!$handle = fopen($testfile,'w'))
$err_msg .= 'Impossible d\'ouvrir un fichier en écriture dans le répertoire "backup_sql/"'."\n";
else
fclose($handle);
if (file_exists($testfile)) unlink($testfile);
if ($err_msg == ''){
$db_list = mysql_list_dbs($link);
$names = array();
while ($row = mysql_fetch_object($db_list)) {
if ($row->Database != 'information_schema'){
$q = 'SHOW CREATE DATABASE `'.($row->Database).'`';
$r = mysql_query($q);
while ($s=mysql_fetch_object($r)){
$filename = 'BackupSQL_'.($row->Database).'_'.date('d-m-Y').'.sql';
$names[] = $filename;
if (!$handle = fopen('backup_sql/'.$filename, 'w'))
$err_msg .= 'Impossible d\'ouvrir en écriture le fichier sql de '.($row->Database)."\n";
else{
$sql_header .= '# SQL Dump par script PHP'."\n";
$sql_header .= '# http://www.******.com'."\n";
$sql_header .= '#'."\n";
$sql_header .= '# Serveur: sql.*****.fr'."\n";
$sql_header .= '# Généré le '.date('d-m-Y à H:i:s').''."\n";
$sql_header .= '# Version du serveur PHP: '.phpversion().''."\n";
$sql_header .= '# Version de Mysql: '.mysql_get_server_info().''."\n";
$sql_header .= '#'."\n";
$sql_header .= '# Base de données: `'.($row->Database).'`'."\n";
$sql_header .= '#'."\n";
$sql_header .= '#'."\n\n";
$sql_header .= $s->{'Create Database'}.";\n\n";
if (fwrite($handle, $sql_header) === FALSE)
$err_msg .= 'Impossible d\'écrire dans le fichier sql de '.($row->Database)."\n";
else{
mysql_select_db($row->Database, $link);
$q3 = 'SHOW TABLES';
$r3 = mysql_query($q3);
while ($s3 = mysql_fetch_object($r3)){
$table = $s3->{'Tables_in_'.($row->Database)};
$q4 = 'SHOW CREATE TABLE `'.$table.'`;';
$r4 = mysql_query($q4);
while ($s4 = mysql_fetch_object($r4)){
$sql_export = '';
$sql_export .= '# ---------------------------------------------------'."\n\n";
$sql_export .= '#'."\n";
$sql_export .= '# Structure de la table `'.$table.'`'."\n";
$sql_export .= '#'."\n\n";
$sql_export .= $s4->{'Create Table'}."\n\n";
$q5 = 'SELECT * FROM `'.$table.'`;';
$r5 = mysql_query($q5);
$slashes = array();
$nbfields = mysql_num_fields($r5);
for($i=0; $i < $nbfields; $i++)
if (in_array(mysql_field_type($r5, $i), array('string','blob')))
$slashes[$i] = '\'';
$count = 0;
while($s5 = mysql_fetch_array($r5)){
$count++;
$sql_export .= '#'."\n";
$sql_export .= '# Contenu de la table `'.$table.'`'."\n";
$sql_export .= '#'."\n\n";
$sql_export .= 'INSERT INTO `'.$table.'` VALUES(';
$sql_export .= $slashes[0].mysql_real_escape_string($s5[0]).$slashes[0];
for($i=1; $i < $nbfields; $i++)
$sql_export .= ', '.$slashes[$i].mysql_real_escape_string($s5[$i]).$slashes[$i];
$sql_export .= ");\n";
if($count == $maxinsert){
if (fwrite($handle, $sql_export) === FALSE){
$err_msg .= 'Erreur d\'exportation avec la '.$table.' de la base '.($row->Database)."\n";
}
else
$sql_export = '';
}
}
$sql_export .= "\n";
if (fwrite($handle, $sql_export) === FALSE)
$err_msg .= 'Erreur d\'exportation avec la '.$table.' de la base '.($row->Database)."\n";
}
}
}
fclose($handle);
}
}
}
}
}
}
}
$mysql_data = array(SERVEUR,NAME,PASS);
MERCI et @+