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调用dll的实例操作动画与代码分享
Aug 14 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
php隐藏IP地址后两位显示为星号的方法
Nov 21 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
为你总结一些php信息函数
Oct 21 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
PHP多维数组转一维数组的简单实现方法
Dec 23 PHP
Smarty环境配置与使用入门教程
May 11 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
jQuery的基本概念与高级编程
2015/05/14 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
python为tornado添加recaptcha验证码功能
2014/02/26 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
python opencv之分水岭算法示例
2018/02/24 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
pandas数据集的端到端处理
2019/02/18 Python
python实现KNN分类算法
2019/10/16 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python中的整除和取模实例
2020/06/03 Python
python的setattr函数实例用法
2020/12/16 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
交通违章检讨书
2014/09/21 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
工作证明格式范文
2015/06/15 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
护士旷工检讨书
2015/08/15 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书