Code php dùng để backup database mysql không lỗi tiếng việt


Việc Backup dữ liệu thường xuyên sẽ đảm bảo về vấn đề website bị mất dữ liệu khi bị hacker tấn công.

 
» Tăng tốc website bằng cache với basket.js
» Top 10 trang web giúp bạn mã hóa code PHP
» 6 điều có thể bạn chưa biết về PHP

Trung bình mỗi tuần hoặc mỗi tháng các nhà quản trị website sẽ Backup dữ liệu trang web về máy. Việc Backup dữ liệu Mysql sẽ rất tốn thời gian vì phải trải qua giai đoạn như:

+ Đăng nhập vào hosting website.

+ Vào hệ thống quản trị cơ sở dữ liệu Mysql (Mysql database).

+ Chọn cơ sở dữ liệu (database) cần Backup.

+ Export dữ liệu về máy.

Dưới đây, là đoạn code php giúp bạn Backup dữ liệu về máy mà không cần phải qua các thao tác trên. Dữ liệu được backup khi khôi phục (restore) sẽ không gây ra lỗi tiếng việt cho website.

Các bước tạo file php Backup Database:

- Trước tiên bạn cần tạo ra một file connection.php để kết nối đến cơ sở dữ liệu với nội dung như sau:


  1. $host="localhost"; // Mặc định là localhost
  2. $uname="username_database";
  3. $pass="password_database";
  4. $database = "database_name";
  5. // Hàm bỏ qua lỗi kết nối
  6. error_reporting(E_ALL ^ E_DEPRECATED);
  7. // Xử lý kết nối database
  8. $connection=mysql_pconnect($host,$uname,$pass) or die("Database Connection Failed");
  9. // Xử lý lấy dữ liệu ngôn ngữ utf8
  10. mysql_set_charset('utf8',$connection);
  11. // Kết nối đến cơ sở dữ liệu
  12. $selectdb=mysql_select_db($database) or die("Database could not be selected");
  13. $result=mysql_select_db($database) or die("Database cannot be selected");

- Tiếp theo bạn tạo file database_backup.php với hàm xuất dữ liệu thành file .sql có nội dung:


  1. // Lấy đường dẫn file kết nối cơ sở dữ liệu
  2. include("connection.php");
  3. function backup_db(){
  4. // Lưu trữ tất cả tên Table vào một mảng
  5. $return='';
  6. $allTables = array();
  7. $result = mysql_query('SHOW TABLES');
  8. while($row = mysql_fetch_row($result)){
  9. $allTables[] = $row[0];
  10. }
  11.  
  12. foreach($allTables as $table){
  13. $result = mysql_query('SELECT * FROM '.$table);
  14. $num_fields = mysql_num_fields($result);
  15.  
  16. $return.= 'DROP TABLE IF EXISTS '.$table.';';
  17. $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
  18. $return.= "\n\n".$row2[1].";\n\n";
  19.  
  20. for ($i = 0; $i < $num_fields; $i++) {
  21. while($row = mysql_fetch_row($result)){
  22. $return.= 'INSERT INTO '.$table.' VALUES(';
  23. for($j=0; $j<$num_fields; $j++){
  24. $row[$j] = addslashes($row[$j]);
  25. $row[$j] = str_replace("\n","\\n",$row[$j]);
  26. if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; }
  27. else { $return.= '""'; }
  28. if ($j<($num_fields-1)) { $return.= ','; }
  29. }
  30. $return.= ");\n";
  31. }
  32. }
  33. $return.="\n\n";
  34. }
  35.  
  36. // Tạo thư mục Backup
  37. $folder = 'DB_Backup/';
  38. if (!is_dir($folder))
  39. mkdir($folder, 0777, true);
  40. chmod($folder, 0777);
  41. // Đặt tên file
  42. $date = date('m-d-Y-H-i-s', time());
  43. $filename = $folder."db-backup-".$date;
  44. //Tạo file .sql
  45. $handle = fopen($filename.'.sql','w+');
  46. fwrite($handle,($return));
  47. fclose($handle);
  48. }
  49.  
  50. // Gọi hàm thực thi
  51. backup_db();

Khi bạn chạy file database_backup.php thì nó sẽ thực thi xuất ra file .sql cho bạn.

Với đoạn code trên bạn có thể viết thêm một ứng quản lý backup dữ liệu trên host thật dễ dàng mà không mất nhiều thời gian.

Chúc các bạn thành công!


Có thể bạn quan tâm
21/02/2019
648