PHP备份数据库生成SQL文件并下载的函数代码


Posted in PHP onFebruary 05, 2012
<!?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].";nn"; 
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].";nn"; 
$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'].";rnrn";#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);rn"; 
} 
$mysql.="rn"; 
} 
$filename=date('Ymd')."_".$dbname.".sql"; //文件名为当天的日期 
$fp = fopen($filename,'w'); 
fputs($fp,$mysql); 
fclose($fp); 
echo "数据备份成功,生成备份文件".$filename; 
?>
PHP 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
社区(php&amp;&amp;mysql)四
Oct 09 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
php查询操作实现投票功能
May 09 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
php使用curl实现简单模拟提交表单功能
May 15 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP递归统计系统中代码行数
Sep 19 PHP
php进行md5加密简单实例方法
Sep 19 PHP
Linux系统下安装PHP7.3版本
Jun 26 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 #PHP
php 搜索框提示(自动完成)实例代码
Feb 05 #PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 #PHP
PHP测试程序运行时间的类
Feb 05 #PHP
PHP设计模式 注册表模式
Feb 05 #PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 #PHP
需要注意的几个PHP漏洞小结
Feb 05 #PHP
You might like
PHP源码之explode使用说明
2011/08/05 PHP
php学习笔记之基础知识
2014/11/08 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
python3多线程知识点总结
2019/09/26 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
聊聊python中的循环遍历
2020/09/07 Python
数据库笔试题
2013/05/09 面试题
新闻专业个人求职信
2013/12/19 职场文书
啦啦队口号大全
2014/06/16 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
2014年学校工作总结
2014/11/20 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
Nginx进程管理和重载原理详解
2021/04/22 Servers
详解Go语言中Get/Post请求测试
2022/06/01 Golang
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers