[ PHP ] 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
Nguồn : juno_okyo's blog
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
Nguồn : juno_okyo's blog
[ PHP ] Code Backup dữ liệu MySQL trên PHP
Reviewed by Nguyen Nam Hong
on
8:17 PM
Rating: