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 与 MySQL 数据库操作函数详解
Oct 09 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
thinkphp缓存技术详解
Dec 09 PHP
关于PHP开发的9条建议
Jul 27 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 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/12/30 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
Stop SQL Server
2007/06/21 Javascript
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python小程序实现刷票功能详解
2019/07/17 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Python过滤序列元素的方法
2020/07/31 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
高级电工工作职责
2013/11/21 职场文书
经典婚礼主持词
2014/03/13 职场文书
中药专业自荐信范文
2014/03/18 职场文书
房产委托公证书样本
2014/04/04 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
军训个人总结
2015/03/03 职场文书
收银员岗位职责范本
2015/04/07 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL