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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
PHP 模板高级篇总结
Dec 21 PHP
php getsiteurl()函数
Sep 05 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
简单实现PHP留言板功能
Dec 21 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
JS实现简易计算器
2020/02/14 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
python实现无边框进度条的实例代码
2020/12/30 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
C++是不是类型安全的
2014/02/18 面试题
编辑找工作求职信分享
2014/01/03 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
周年庆促销方案
2014/03/15 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
学校运动会报道稿
2014/09/23 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
婚礼答谢礼品
2015/01/20 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers
python语言中pandas字符串分割str.split()函数
2022/08/05 Python