View difference between Paste ID: NshY4qA2 and 50kmLQ9C
SHOW: | | - or go back to the newest paste.
1
<?php
2
3
    backup_tables('host','username','password');
4
5
6
    /* backup the db OR just a table */
7
    function backup_tables($host,$user,$pass,$name,$tables = '*')
8
    {
9
10
        $link = mysql_connect($host,$user,$pass);
11
        mysql_select_db($name,$link);
12
13
        //get all of the tables
14
        if($tables == '*')
15
        {
16
            $tables = array();
17
            $result = mysql_query('SHOW DATABASES');
18
            while($arr = mysql_fetch_array($result))
19
            {
20-
                if($arr[0] == 'information_schema' || $arr[0] == 'mysql')
20+
21-
                    continue;
21+
22
                {
23
                    $tables[$arr[0]][] = $row[0];
24
                }
25
            }
26
        }
27
        else
28
        {
29
            $tables = is_array($tables) ? $tables : explode(',',$tables);
30
        }
31
        
32
        /*A little middle check, to see if all is saved in the right way*/
33
        /*$k=0;
34
        foreach($tables as $database => $tab){
35
            echo "<p style='font-weight: bold;text-transform: uppercase;'>$database</p><br/>";
36
            print_r($tab);
37
            echo '<br/>';
38
        }*/
39
        
40
        //cycle through
41
        mkdir('backup_'.date('Y-m-d'));
42
        foreach($tables as $database => $tab){
43
            $return = '';
44
            foreach($tab as $table){
45
                $result = mysql_query('SELECT * FROM `'.$database.'`.`'.$table.'`');
46
                $num_fields = mysql_num_fields($result);
47
48
                //$return.= 'DROP TABLE `'.$database.'`.`'.$table.'`;';
49
                $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$database.'`.`'.$table.'`'));
50
                $return.= "\n\n".$row2[1].";\n\n";
51
52
                for ($i = 0; $i < $num_fields; $i++) 
53
                {
54
                    while($row = mysql_fetch_row($result))
55
                    {
56
                        $return.= 'INSERT INTO `'.$database.'`.`'.$table.'` VALUES(';
57
                        for($j=0; $j<$num_fields; $j++) 
58
                        {
59
                            $row[$j] = addslashes($row[$j]);
60
                            $row[$j] = ereg_replace("\n","\\n",$row[$j]);
61
                            if($row[$j] == '')
62
                                $val = "NULL";
63
                            else
64
                                $val = $row[$j];
65
                            if (isset($row[$j])) { $return.= '"'.$val.'"' ; } else { $return.= 'NULL'; }
66
                            if ($j<($num_fields-1)) { $return.= ','; }
67
                        }
68
                        $return.= ");\n";
69
                    }
70
                }
71
                $return.="\n\n\n";
72
            }
73
            $handle = fopen('backup_'.date('Y-m-d').'/'.$database.'.sql','w+');
74
            fwrite($handle,$return);
75
            fclose($handle);
76
        }
77
78
        //save file
79
    }
80
?>