PHP备份MySQL数据库源码

参考来源:中国站长网

对源代码做了局部修正:
1. 增加PHP头,声明以utf-8输出。
2. 考虑到通过crontab来每12个小时备份一下,因此文件名增加了到时间date('YmdH')。
3. 新建db子目录用于存放sql数据库,这样就不影响到php源码的整洁。
4. 把那些让人不知所以然的“rn”替换成正确的代码。

更新后的源码如下:

<?php
header('Content-Type:text/html;charset=utf-8');
header("Expires: 0");
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
$host="localhost";
$user="数据库用户名";
$password="数据库用户密码";
$dbname="数据库名";
$destination_folder = 'db/';
if (!file_exists($destination_folder))
{
	mkdir($destination_folder);
}
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql= "set charset utf8;\r\n";
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1)){
    $table=$t&#91;0&#93;;
    $q2=mysql_query("show create table `$table`");
    $sql=mysql_fetch_array($q2);
    $mysql.=$sql&#91;'Create Table'&#93;.";\r\n\r\n";
    $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=$destination_folder . date('YmdH') . ".sql";
$fp = fopen($filename, 'w');
fputs($fp, $mysql);
fclose($fp);
echo "数据备份成功,生成备份文件" . $filename . "";
?>

Tags: ,

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。