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

Backup Database Mysql

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.

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:

$host="localhost"; // Mặc định là localhost
$uname="username_database";
$pass="password_database";
$database = "database_name";
// Hàm bỏ qua lỗi kết nối
error_reporting(E_ALL ^ E_DEPRECATED);
// Xử lý kết nối database
$connection=mysql_pconnect($host,$uname,$pass) or die("Database Connection Failed");
// Xử lý lấy dữ liệu ngôn ngữ utf8
mysql_set_charset('utf8',$connection);
// Kết nối đến cơ sở dữ liệu
$selectdb=mysql_select_db($database) or die("Database could not be selected");
$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:

// Lấy đường dẫn file kết nối cơ sở dữ liệu
include("connection.php");
function backup_db(){
	// Lưu trữ tất cả tên Table vào một mảng
	$return='';
	$allTables = array();
	$result = mysql_query('SHOW TABLES');
	while($row = mysql_fetch_row($result)){
		 $allTables[] = $row[0];
	}
	 
	foreach($allTables 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] = str_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";
	}
	 
	// Tạo thư mục Backup
	$folder = 'DB_Backup/';
	if (!is_dir($folder))
	mkdir($folder, 0777, true);
	chmod($folder, 0777);	
	// Đặt tên file
	$date = date('m-d-Y-H-i-s', time());
	$filename = $folder."db-backup-".$date;
	//Tạo file .sql
	$handle = fopen($filename.'.sql','w+');
	fwrite($handle,($return));
	fclose($handle);
}
 
// Gọi hàm thực thi
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!

Chat với Agitech