jueves, 22 de septiembre de 2011

Sencilla función para hacer copia de seguridad de MySQL con php



He encontrado en fluidbyte una sencilla función para hacer backup de una base de datos MySQL.
1function backupDatabase($file){
2   $tables array();
3   $result = mysql_query('SHOW TABLES');
4     while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; }
5     //cycle through
6     $return "";
7     foreach($tables as $table){
8     $result = mysql_query('SELECT * FROM '.$table);
9     $num_fields = mysql_num_fields($result);
10     $return.= 'DROP TABLE '.$table.';';
11     $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
12     $return.= "\n\n".$row2[1].";\n\n";
13     for ($i = 0; $i $num_fields$i++){
14       while($row = mysql_fetch_row($result)){
15       $return.= 'INSERT INTO '.$table.' VALUES(';
16         for($j=0; $j<$num_fields$j++){
17         $row[$j] = addslashes($row[$j]);
18         $row[$j] = ereg_replace("\n","\\n",$row[$j]);
19         if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else$return.= '""'; }
20           if ($j<($num_fields-1)) { $return.= ','; }
21         }
22       $return.= ");\n";
23       }
24     }
25     $return.="\n\n\n";
26     }
27   //save file
28   $handle fopen($file,'w+');
29   fwrite($handle,$return);
30   fclose($handle);
31}
Su uso es bien sencillo:
1backupDatabase('/path_to_file/backup' date('m-d-y') . '.sql');

No hay comentarios:

Publicar un comentario