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无敌近乎加密方式!
Jul 17 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
php实现图片添加水印功能
Feb 13 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
PHP全局使用Laravel辅助函数dd
Dec 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
javascript中的new使用
2010/03/20 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
nodejs教程之入门
2014/11/21 NodeJs
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Django框架多表查询实例分析
2018/07/04 Python
python opencv如何实现图片绘制
2020/01/19 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
美容院店长岗位职责
2014/04/08 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js