Sencilla función para hacer copia de seguridad de MySQL

He encontrado en fluidbyte una sencilla función para hacer backup de una base de datos MySQL.

function backupDatabase($file){
   $tables = array();
   $result = mysql_query('SHOW TABLES');
     while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; }
     //cycle through
     $return = "";
     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.= "nn".$row2[1].";nn";
     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.="nnn";
     }
   //save file
   $handle = fopen($file,'w+');
   fwrite($handle,$return);
   fclose($handle);
}

Su uso es bien sencillo:

backupDatabase('/path_to_file/backup' . date('m-d-y') . '.sql');

Tags: , ,

Dejar un comentario

Spam Protection by WP-SpamFree