2010-09-03

Backup de una base de datos MySQL a XML con PHP

En el blog de David Walsh he encontrado un interesante script con el que poder realizar un backup de una base de datos mysql a xml. El script es compatible tanto con PHP4 como con PHP5
  1. <?php  
  2. '.$br;  
  3.     $xml.'<database name="'.$name.'">'.$br;  
  4.     //PARA CADA TABLA...   
  5.     while($table = mysql_fetch_row($result)) {  
  6.         $xml.= $tab.''.$br;  
  7.         //OBTENEMOS LAS FILAS  
  8.         $query3 = 'SELECT * FROM '.$table[0];  
  9.         $records = mysql_query($query3,$link) or die('cannot select from table: '.$table[0]);  
  10.         //ATRIBUTOS DE LA TABLA  
  11.         $attributes = array('name','blob','maxlength','multiple_key','not_null','numeric','primary_key','table','type','default','unique_key','unsigned','zerofill');  
  12.         $xml.= $tab.$tab.'<columns>'.$br;  
  13.         $x = 0;  
  14.         while($x < mysql_num_fields($records)) {  
  15.             $meta = mysql_fetch_field($records,$x);  
  16.             $xml.= $tab.$tab.$tab.'<column ;="" foreach($attributes="" as="" $attribute)="" {="" $xml.="$attribute.'="'.$meta-">$attribute.'" ';  
  17.             }  
  18.             $xml.'/>'.$br;  
  19.             $x++;  
  20.         }  
  21.         $xml.= $tab.$tab.'</column>'.$br;  
  22.         $xml.= $tab.$tab.'<records>'.$br;  
  23.         while($record = mysql_fetch_assoc($records))  
  24.         {  
  25.             $xml.= $tab.$tab.$tab.'<record>'.$br;  
  26.             foreach($record as $key=>$value)  
  27.             {  
  28.                 $xml.= $tab.$tab.$tab.$tab.'<'.$key.'>'.htmlspecialchars(stripslashes($value)).'<!--'.$key.'-->'.$br;  
  29.             }  
  30.             $xml.= $tab.$tab.$tab.'</record>'.$br;  
  31.         }  
  32.         $xml.= $tab.$tab.'</records>'.$br;  
  33.         $xml.= $tab.'</columns><table name="'.$table[0].'"></table>'.$br;  
  34.     }  
  35.     $xml.'</database>';  
  36.     //GUARDAMOS EL FICHERO  
  37.     $handle = fopen($name.'-backup-'.time().'.xml','w+');  
  38.     fwrite($handle,$xml);  
  39.     fclose($handle);  
  40. }  
  41. ?> 

No hay comentarios: