Ir para conteúdo
Fórum Script Brasil
  • 0

Backup De Banco De Dados Mysql


Beraldo

Pergunta

Script postado por: Fabyo

Backup de banco de dados MySQL

Basta configurar a conexao com o banco e rodar o script

ele pega o banco completo com as tabelas e conteudo e cria um arquivo.sql com a data atual

obs: Feito com Mysqli ( versao das funções do mysql melhorada com varios recursos a mais e orientado a objeto )

só funciona com PHP 5

esse script não esta usando orientação a objetos ;)

http://br.php.net/mysqli

<?php

$link = mysqli_connect("localhost", "user", "senha", "nome_banco");

if (function_exists("set_time_limit") == 1 and get_cfg_var("safe_mode") == 0) 
    {
     @set_time_limit(0);
    } 

function sqlAddslashes($str = '', $is_like = false)
    {
     if ($is_like) 
   {
          $str = str_replace('\\', '\\\\\\\\', $str);
      } 
  
  else 
   {
          $str = str_replace('\\', '\\\\', $str);
      } 
       $str = str_replace('\'', '\\\'', $str);
       return $str;
    } 

function dumptb($table)
    {
     global $link;
     
  $nline = "\n";
     $dp = "CREATE TABLE $table ($nline\r\n";
     $firstfield = 1;
     $fields_array = mysqli_query($link, "SHOW FIELDS FROM $table");

     while ($field = mysqli_fetch_array($fields_array)) 
   {
          if (!$firstfield) 
     {
               $dp .= ",\r\n";
           } 
   
    else 
     {
               $firstfield = 0;
           }
     
            $dp .= "\t" . $field["Field"] . " " . $field["Type"];

          if (isset($field['Default']) && $field['Default'] != '') 
     {
               $dp .= ' default \'' . sqlAddslashes($field['Default']) . '\'';
           } 
         
    if ($field['Null'] != 'YES') 
     {
               $dp .= ' NOT NULL ';
      
           } 
     
          if (!empty($field["Extra"])) 
     {
               $dp .= $field["Extra"];
           } 
      } 
   
mysqli_free_result($fields_array);
$keysindex_array = mysqli_query($link, "SHOW KEYS FROM $table");

    while ($key = mysqli_fetch_array($keysindex_array)) 
  {
         $kname = $key['Key_name'];
         if ($kname != "PRIMARY" and $key['Non_unique'] == 0) 
    {
              $kname = "UNIQUE|$kname";
          } 

           $index[$kname][] = $key['Column_name'];
     } 
        mysqli_free_result($keysindex_array);

    while (list($kname, $columns) = @each($index)) 
  {
         $dp .= ",\n";
         $colnames = implode($columns, ",");
         
   if ($kname == 'PRIMARY') 
    {
              $dp .= "\tPRIMARY KEY ($colnames)";
          } 
   
   else 
    {
              if (substr($kname, 0, 6) == 'UNIQUE') 
      {
                   $kname = substr($kname, 7);
               } 
                $dp .= "   KEY $kname ($colnames)";
          } 
  } 
    
$dp .= "\n);\n\n";
$rows = mysqli_query($link, "SELECT * FROM $table");
$numfields = mysqli_num_fields($rows);

    while ($row = mysqli_fetch_array($rows)) 
  {
         $dp .= "INSERT INTO $table VALUES(";
         $fieldcounter = -1;
         $firstfield = 1;
          
    while (++$fieldcounter < $numfields) 
     {
               if (!$firstfield) 
       {
                    $dp .= ' , ';
                } 
      
      else 
       {
                    $firstfield = 0;
                } 
   
             if (!isset($row[$fieldcounter])) 
        {
        $dp .= 'NULL';
       } 
      
      else 
       {
                    $dp .= "'" . mysqli_escape_string($link, $row[$fieldcounter]) . "'";
                } 
           } 
              $dp .= ");\n";
     } 
        mysqli_free_result($rows);
        return $dp;
    } 

$table = mysqli_query($link, "SHOW tables");
unset($temp_buffer);
    while ($row = mysqli_fetch_array($table)) 
  {
      if (!empty($row[0])) 
    {
           $temp_buffer = dumptb($row[0]) . "\n\n\n";
      } 
  } 

$file_name = "backup_sql_" . date("d-m-Y") . ".txt";


$filehandle = fopen($file_name, 'w');
$result = mysqli_query($link, "SHOW tables");

    while ($row = mysqli_fetch_array($result)) 
  {
      fwrite($filehandle, dumptb($row[0]) . "\n\n\n");
  } 
   fclose($filehandle);

mysqli_close($link);

?>

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...