Si lo que queremos hacer es guardar una copia de nuestra base de datos MySQL o tablas individuales (hacer un backup), lo podemos hacer con PHP através del siguiente script:

<?php
//Ponemos los datos de acceso a nuestra base de datos
//y ejecutamos la función
backup_tables('localhost','root','root','bd');

/* Hacer backup de una base de datos o de una tabla */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
  
  $link = mysql_connect($host,$user,$pass);
  mysql_select_db($name,$link);
  
  //obtenemos todas las tablas
  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);
  }
  
  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";
  }
  
  //guardamos el archivo
  $handle = fopen('db-backup-'.date("d-m-Y").'.sql','w+');
  fwrite($handle,$return);
  fclose($handle);
}
?>

El archivo lo guardará en formato .sql con el nombre db-backup seguido de la fecha en que se creó el archivo, por ejemplo, “db-backup-14-11-2012.sql“.

Además si queremos por ejemplo que este script se ejecute todos los días, podemos usar CRON JOBS de Cpanel tal y como expliqué en el artículo anterior.

Sobre Reacción Estudio

Somos un estudio informático formado por jóvenes centrados en el desarrollo web, el diseño gráfico y la fotografía. Puedes solicitar presupuesto para tu proyecto a través de nuestra página web o por teléfono, pero en este blog hablaremos de todo lo que engloba el desarrollo web a día de hoy.


  • Javier

    Estoy utilizando el codigo con scriptcase pero me da el siguiente error Error

    Undefined variable: return

    cordiales saludos

    Javier

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.     ACEPTAR