PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)


Posted in PHP onMay 10, 2014

用php代码实现数据库备份可以使网站的管理变得非常便捷,我们可以直接进后台操作就能完成数据库的备份。

关键技术:

1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组。
2. show create table 表名 可以获取表结构。
3. select * from 表名 取出所有记录,用循环拼接成 insert into... 语句。

实现代码:

<?php header("Content-type:text/html;charset=utf-8");
 //配置信息
 $cfg_dbhost = 'localhost';
 $cfg_dbname = 'ftdm';
 $cfg_dbuser = 'root';
 $cfg_dbpwd = 'root';
 $cfg_db_language = 'utf8';
 $to_file_name = "ftdm.sql";
 // END 配置

 //链接数据库
 $link = mysql_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd);
 mysql_select_db($cfg_dbname);
 //选择编码
 mysql_query("set names ".$cfg_db_language);
 //数据库中有哪些表
 $tables = mysql_list_tables($cfg_dbname);
 //将这些表记录到一个数组
 $tabList = array();
 while($row = mysql_fetch_row($tables)){
  $tabList[] = $row[0];
 }
 echo "运行中,请耐心等待...<br/>";
 $info = "-- ----------------------------\r\n";
 $info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n";
 $info .= "-- 仅用于测试和学习,本程序不适合处理超大量数据\r\n";
 $info .= "-- ----------------------------\r\n\r\n";
 file_put_contents($to_file_name,$info,FILE_APPEND);
 //将每个表的表结构导出到文件
 foreach($tabList as $val){
  $sql = "show create table ".$val;
  $res = mysql_query($sql,$link);
  $row = mysql_fetch_array($res);
  $info = "-- ----------------------------\r\n";
  $info .= "-- Table structure for `".$val."`\r\n";
  $info .= "-- ----------------------------\r\n";
  $info .= "DROP TABLE IF EXISTS `".$val."`;\r\n";
  $sqlStr = $info.$row[1].";\r\n\r\n";
  //追加到文件
  file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
  //释放资源
  mysql_free_result($res);
 }
 //将每个表的数据导出到文件
 foreach($tabList as $val){
  $sql = "select * from ".$val;
  $res = mysql_query($sql,$link);
  //如果表中没有数据,则继续下一张表
  if(mysql_num_rows($res)<1) continue;
  //
  $info = "-- ----------------------------\r\n";
  $info .= "-- Records for `".$val."`\r\n";
  $info .= "-- ----------------------------\r\n";
  file_put_contents($to_file_name,$info,FILE_APPEND);
  //读取数据
  while($row = mysql_fetch_row($res)){
   $sqlStr = "INSERT INTO `".$val."` VALUES (";
   foreach($row as $zd){
    $sqlStr .= "'".$zd."', ";
   }
   //去掉最后一个逗号和空格
   $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);
   $sqlStr .= ");\r\n";
   file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
  }
  //释放资源
  mysql_free_result($res);
  file_put_contents($to_file_name,"\r\n",FILE_APPEND);
 }
 echo "OK!";
?>
PHP 相关文章推荐
PHP新手上路(七)
Oct 09 PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
php 分页函数multi() discuz
Jun 21 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
php遍历树的常用方法汇总
Jun 18 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 PHP
php使用mkdir创建多级目录入门例子
May 10 #PHP
一个简单的PHP验证码实现代码
May 10 #PHP
php生成随机密码自定义函数代码(简单快速)
May 10 #PHP
php实现按文件名搜索文件的远程文件查找器
May 10 #PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 #PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
May 10 #PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 #PHP
You might like
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
python利用datetime模块计算时间差
2015/08/04 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
市场营销毕业生自荐信
2013/11/23 职场文书
工作表现自我评价
2014/02/08 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2014全年工作总结
2014/11/27 职场文书
优秀校长事迹材料
2014/12/24 职场文书
开工典礼致辞
2015/07/29 职场文书
社区服务理念口号
2015/12/25 职场文书
教师培训学习心得体会
2016/01/21 职场文书
JavaScript异步操作中串行和并行
2021/11/20 Javascript
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers