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实现WEB动态网页静态
Oct 09 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
用php解析html的实现代码
Aug 08 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
cakephp打印sql语句的方法
Feb 13 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
PHP7移除的扩展和SAPI
Mar 09 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使用Cookie控制访问授权的方法
2015/01/21 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
看了就知道什么是JSON
2007/12/09 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
Python数据结构之Array用法实例
2014/10/09 Python
跟老齐学Python之变量和参数
2014/10/10 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
请介绍一下WSDL的文档结构
2013/03/17 面试题
家庭教育先进个人事迹材料
2014/01/24 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
关于学习的决心书
2015/02/05 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python