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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
一些常用的php简单命令代码集锦
Sep 24 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php实现统计邮件大小的方法
Aug 06 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 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删除HTMl标签的三种解决方法
2013/06/30 PHP
php strftime函数的详细用法
2018/06/21 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
JS中的phototype详解
2017/02/04 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
iPython pylab模式启动方式
2020/04/24 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
个人现实表现材料
2014/02/04 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
公司门卫岗位职责
2014/03/15 职场文书
初中班主任评语大全
2014/04/24 职场文书
秋天的雨教学反思
2014/04/27 职场文书
正科级干部考察材料
2014/05/29 职场文书
公司员工离职证明书
2014/10/04 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
自我评价优缺点范文
2015/03/11 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL