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获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
ThinkPHP视图查询详解
Jun 30 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 PHP
php 中的信号处理操作实例详解
Mar 04 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 PHP
php的对象传值与引用传值代码实例讲解
Feb 26 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
潜说js对象和数组
2011/05/25 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
javascript实现简易计算器
2017/02/01 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
Python中将字典转换为列表的方法
2016/09/21 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python flask安装和命令详解
2019/04/02 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
python爬虫之遍历单个域名
2019/11/20 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
如何将整数int转换成字串String
2014/03/21 面试题
一套带答案的C++笔试题
2014/01/10 面试题
关于.NET, HTML的五个问题
2012/08/29 面试题
应用化学专业职业生涯规划书
2014/01/22 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
服装设计专业求职信
2014/06/16 职场文书
干部个人对照检查材料
2014/08/25 职场文书
工作收入证明模板
2015/06/12 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL