Skip to main content

Share code Backup dữ liệu MySQL trên PHP

Chào mọi người, để sao lưu database MySQL chúng ta có rất nhiều cách: Bạn có thể dùng PHPMyAdmin, một mã nguồn mở để sao lưu phục hồi, hoặc bạn có thể sử dụng tool của MySQL... Tuy nhiên tôi đang viết một website và tôi muốn tự tạo cho mình một đoạn code PHP có chức năng sao lưu cơ sở dữ liệu MySQL. Sau một hồi lần mò trên internet tôi cũng tìm được một đoạn mã chạy tốt và mang ra chỉnh sửa một xíu cho nó phù hợp với Tiếng Việt

Bạn tạo mới một file PHP và copy đoạn code sau vào:
    <?php

    backup_tables('localhost','root','','maytinh');


    /* Sao lưu cả database hoặc một bảng cụ thể nào đó */
    function backup_tables($host,$user,$pass,$name,$tables = '*')
    {
     
      $link = mysql_connect($host,$user,$pass);
      mysql_select_db($name,$link);
      mysql_query("SET NAMES 'UTF8'"); 

      //Lấy tất cả các bảng
      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);
      }
     
      //Vòng lặp
      foreach($tables as $table)
      {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
       
        $return.= 'DROP TABLE IF EXISTS '.$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";
      }
     
      //save file
      $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
      fwrite($handle,$return);
      fclose($handle);
    }
    ?>

Ở đây tôi thực hiện sao lưu database có tên là "maytinh" --> File backup sẽ được chuyển đến thư mục gốc của bạn, và bạn có thể tùy chỉnh thư mục này thoải mái. Bài tiếp tôi sẽ hướng dẫn các bạn đoạn code thực hiện phục hồi dữ liệu trên PHP

Share this with your friends
Loading...