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+APACHE实现用户论证的方法
Oct 09 PHP
smarty实例教程
Nov 19 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 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和ACCESS写聊天室(五)
2006/10/09 PHP
浅析php学习的路线图
2013/07/10 PHP
php代码架构的八点注意事项
2016/01/25 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
理解Python中的类与实例
2015/04/27 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
结对共建工作方案
2014/06/02 职场文书
团干部培训方案
2014/06/03 职场文书
企业安全生产标语
2014/06/06 职场文书
房产公证书
2015/01/23 职场文书
天坛导游词
2015/02/02 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
植物园观后感
2015/06/11 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL