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 xml实例 留言本
Mar 20 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP实现微信发红包程序
Aug 24 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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+javascript制作带提示的验证码源码分享
2014/05/28 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
javascript 函数式编程
2007/08/16 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
python中快速进行多个字符替换的方法小结
2016/12/15 Python
Flask数据库迁移简单介绍
2017/10/24 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python 使用多属性来进行排序
2019/09/01 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
什么是唯一索引
2015/07/05 面试题
给面试官的感谢信
2014/02/01 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
不同意离婚答辩状
2015/05/22 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers