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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
php安装swoole扩展的方法
Mar 19 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
php实现websocket实时消息推送
Mar 30 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
Aug 06 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小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
$()JS小技巧
2007/07/21 Javascript
CSS常用网站布局实例
2008/04/03 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
vue实现在线学生录入系统
2020/05/30 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
Oracle性能调优原则
2012/05/03 面试题
酒店个人求职信范文
2014/01/25 职场文书
快餐公司创业计划书
2014/04/29 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
场地使用证明模板
2014/10/25 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
党校个人总结
2015/03/04 职场文书