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实现定时生成HTML网站首页实例代码
Nov 20 PHP
php Memcache 中实现消息队列
Nov 24 PHP
Look And Say 序列php实现代码
May 22 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
详解js异步文件加载器
Jan 24 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 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 无法载入mysql扩展
2010/03/12 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python简单计算文件夹大小的方法
2015/07/14 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python ansible服务及剧本编写
2017/12/29 Python
python re模块的高级用法详解
2018/06/06 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
文秘专业个人求职信
2013/12/22 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
党员演讲稿
2014/09/04 职场文书
2014年党员整改措施
2014/10/24 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
2015年会计工作总结范文
2015/05/26 职场文书