Monday 18 November 2013

PHP code for backup of mysql database with structure

When you running a medium internet based application then you very important to backup of the database so that whenever the application is enfacted or create a problem . then you can just restore the application using our old database backup. To day i show you simple code help to backup of your database. In this code main thing is that it create two copy of the database backup file one copy for the user and also one copy save at the server side.

There is different format are available like excel,text,sql etc. There is choice of the user in which format save the database backup file.But mysql accept each format.

<?php

backup_tables('localhost','root','','tyre1');


/* 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";
    }
   
    $ext=str_replace(' ',':',date("Y-m-d H:i:s"));
     
    //save file
   
    $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
    $name='db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql';
    echo "<a href='$name'>".$name."</a>";
    echo "<script>window.location='".$name."';</script>";
}


?>

No comments:

Post a Comment