[PHP] backup manuale(o automatico) tabelle msql

giacomo9783

Utente Attivo
24 Ago 2016
80
0
6
36
devo ottenere un backup automatico di tutte le tabelle SEPARATE del mio db mysql. Ho una discreta urgenza e per il momento VA BENISSIMO anche lanciando uno script in php cliccando manualmente su un tasto (a questo ci penso io) che mi salvi le tabelle in un percorso, ad esempio il desktop del pc.

qualcuno ha fra le mani un codice da passarmi? grazie
 

fratt

Nuovo Utente
19 Gen 2019
33
4
8
cosa intendi con SEPARATE? un file per ogni tabella?
se puoi usare la mysqldump fa tutto lei... altrimenti io uso questo codice che però salva un unico file .sql
PHP:
<?php

backup_tables('localhost','username','password','blog');

/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
   
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
   
    //get all of the tables
    if($tables == '*')
    {
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
    }
    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }
   
    //cycle through
    foreach($tables as $table)
    {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
       
        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
       
        for ($i = 0; $i < $num_fields; $i++)
        {
            while($row = mysql_fetch_row($result))
            {
                $return.= 'INSERT INTO '.$table.' VALUES(';
                for($j=0; $j < $num_fields; $j++)
                {
                    $row[$j] = addslashes($row[$j]);
//                    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                    if ($j < ($num_fields-1)) { $return.= ','; }
                }
                $return.= ");\n";
            }
        }
        $return.="\n\n\n";
    }
   
    //save file
    $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
}

?>
Dimenticavo, il codice non è mio, l'ho trovato in rete ma adattato alle mie esigenze funziona.
 

giacomo9783

Utente Attivo
24 Ago 2016
80
0
6
36
Si, con SEPARATE intendo un file per ogni tabella, a meno che non sia possibile aumentare il limite di dimensione di upload in phpmyadmin
 

giacomo9783

Utente Attivo
24 Ago 2016
80
0
6
36
Lo so che non è corretto scrivere tutto maiuscolo... ma non ho capito dove avrei scritto tutto maiuscolo una intera frase ..