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代码
Mar 08 PHP
php中的strpos使用示例
Feb 27 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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
对javascript和select部件的结合运用
2006/10/09 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
好人好事事迹材料
2014/02/12 职场文书
成语的广告词
2014/03/19 职场文书
应急处置方案
2014/06/16 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
Golang jwt身份认证
2022/04/20 Golang
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
Nginx配置使用详解
2022/07/07 Servers