2009年6月8日 星期一

[PHP] mysql數據庫備份代碼


<?php
$host="localhost";
$user="root";
$password="root";
$dbname="test";

mysql_connect($host,$user,$password);
mysql_select_db($dbname);

$mysql= "set charset utf8;\r\n";#for mysql<=5.0
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("show create table `$table`");
$sql=mysql_fetch_array($q2);
$mysql.=$sql['Create Table'].";\r\n\r\n";#DDL

$q3=mysql_query("select * from `$table`");
while($data=mysql_fetch_assoc($q3)){
$keys=array_keys($data);
$keys=array_map('addslashes',$keys);
$keys=join('`,`',$keys);
$keys="`".$keys."`";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
$vals=join("','",$vals);
$vals="'".$vals."'";

$mysql.="insert into `$table`($keys) values($vals);\r\n";
}
$mysql.="\r\n";
}

$filename=date('Ymj').".sql"; //文件名為當天的日期
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "<br><center>數據備份成功,生成備份文件".$filename."</center>";
?>

【下列文章您可能也有興趣】

4 則留言:

匿名 提到...

想請問為什麼我備份出來的資料,會有一堆問號呢

千江有水千江月 提到...

應該是編碼問題.
utf8 或 big5 問題~

Unknown 提到...

請問備份出來的檔案
會存到哪裡
我找不到@@

匿名 提到...

檔案路徑, 請參考這個 php函數
http://php.net/manual/en/function.fopen.php