PHP备份数据库生成SQL文件并下载的方法

这是一个将指定数据库里的所有表备份为一个SQL文件,可下载。这个源码来自dedecms程序,功能挺多,也很实用,但是代码的质量还有待提高

	
  • <!?php?? ?
  • ?? ?
  • /******???备份数据库结构?******/?? ?
  • ???? ?
  • ??????/*? ?
  • ??????函数名称:table2sql()? ?
  • ??????函数功能:把表的结构转换成为SQL? ?
  • ??????函数参数:$table:?要进行提取的表名? ?
  • ??????返?回?值:返回提取后的结果,SQL集合? ?
  • ??????函数作者:heiyeluren? ?
  • ??????*/?? ?
  • ???? ?
  • ?????function?table2sql($table)?? ?
  • ??????{?? ?
  • ??????????global?$db;?? ?
  • ?????????$tabledump?=?"DROP?TABLE?IF?EXISTS?$table;\n";?? ?
  • ?????????$createtable?=?$db--->query("SHOW?CREATE?TABLE?$table");?? ?
  • ?????????$create?=?$db->fetch_row($createtable);?? ?
  • ?????????$tabledump?.=?$create[1].";\n\n";?? ?
  • ??????????return?$tabledump;?? ?
  • ??????}?? ?
  • ???? ?
  • ???? ?
  • ?????/******?备份数据库结构和所有数据?******/?? ?
  • ??????/*? ?
  • ??????函数名称:data2sql()? ?
  • ??????函数功能:把表的结构和数据转换成为SQL? ?
  • ??????函数参数:$table:?要进行提取的表名? ?
  • ??????返?回?值:返回提取后的结果,SQL集合? ?
  • ??????函数作者:heiyeluren? ?
  • ??????*/?? ?
  • ?????function?data2sql($table)?? ?
  • ??????{?? ?
  • ??????????global?$db;?? ?
  • ?????????$tabledump?=?"DROP?TABLE?IF?EXISTS?$table;\n";?? ?
  • ?????????$createtable?=?$db->query("SHOW?CREATE?TABLE?$table");?? ?
  • ?????????$create?=?$db->fetch_row($createtable);?? ?
  • ?????????$tabledump?.=?$create[1].";\n\n";?? ?
  • ???? ?
  • ?????????$rows?=?$db->query("SELECT?*?FROM?$table");?? ?
  • ?????????$numfields?=?$db->num_fields($rows);?? ?
  • ?????????$numrows?=?$db->num_rows($rows);?? ?
  • ??????????while?($row?=?$db->fetch_row($rows))?? ?
  • ??????????{?? ?
  • ?????????????$comma?=?"";?? ?
  • ?????????????$tabledump?.=?"INSERT?INTO?$table?VALUES(";?? ?
  • ??????????????for($i?=?0;?$i?<?$numfields;?$i++)?? ?
  • ??????????????{?? ?
  • ?????????????????$tabledump?.=?$comma."'".mysql_escape_string($row[$i])."'";?? ?
  • ?????????????????$comma?=?",";?? ?
  • ??????????????}?? ?
  • ?????????????$tabledump?.=?");\n";?? ?
  • ??????????}?? ?
  • ?????????$tabledump?.=?"\n";?? ?
  • ???? ?
  • ??????????return?$tabledump;?? ?
  • ??????}?? ?
  • ?>?? ?
  • ?? ?
  • <!--?php??????? ?
  • $host="localhost";?//主机名??????? ?
  • $user="root";?//MYSQL用户名??????? ?
  • $password="root";?//密码??????? ?
  • $dbname="dedecmsv4";?//备份的数据库??????? ?
  • ????? ?
  • mysql_connect($host,$user,$password);??????? ?
  • mysql_select_db($dbname);??????? ?
  • ????? ?
  • $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('Ymd')."_".$dbname.".sql";?//文件名为当天的日期??????? ?
  • $fp?=?fopen($filename,'w');??????? ?
  • fputs($fp,$mysql);??????? ?
  • fclose($fp);??????? ?
  • echo?"数据备份成功,生成备份文件".$filename;??????? ?
  • ?>???
  • 自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

    本文链接地址: PHP备份数据库生成SQL文件并下载的方法 http://www.chhua.com/web-note1475

    相关笔记

    更多