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.
Hay quá tìm mãi mới ra đoạn code này. Cảm ơn anh nhé
Trả lờiXóaem chưa hiểu cái biến return được khai ra ở đâu mà lúc dùng nó lần đầu tiên lại là return.= làm nó báo lỗi trên trình duyệt vậy :( !!!
Trả lờiXóaPHP làm gì có vụ khai báo biến hả bạn ? Đoạn code này tôi chạy bình thường, bạn bị lỗi như thế nào?
Trả lờiXóaBài này thì Ok rồi, mình muốn là làm sao mà nó backup tự động được mới hay, giống như lập lịch cho nó vậy???????
Trả lờiXóaCám ơn bạn rất nhiều
Trả lờiXóabị lỗi này là sao vậy mọi người, sửa giúp mình với, trong vòng lặp foreach :
Trả lờiXóaNotice: Undefined variable: return
Chào bạn, bạn cho mình hỏi, thư mục gốc nằm ở đâu? và file sao lưu được định dạng kiểu file gì vậy? Cảm ơn...
Trả lờiXóacách này không biết còn dùng được không tar
Trả lờiXóa