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 array_merge下进行数组合并的代码
Jul 22 PHP
mysql 性能的检查和优化方法
Jun 21 PHP
php中大括号作用介绍
Mar 22 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
php支持断点续传、分块下载的类
May 02 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
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读取msn上的用户信息类
2008/12/05 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中列表元素连接方法join用法实例
2015/04/07 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
浅谈对yield的初步理解
2017/05/29 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python3 enum模块的应用实例详解
2019/08/12 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
贝佳斯官方网站:Borghese
2020/05/08 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
病人家属写给医院的感谢信
2015/01/23 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL