参考来源:中国站长网
对源代码做了局部修正:
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[0]; $q2=mysql_query("show create table `$table`"); $sql=mysql_fetch_array($q2); $mysql.=$sql['Create Table'].";\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 . ""; ?>