0

0

php实现MYSQL的备份与还原

php中文网

php中文网

发布时间:2016-07-25 08:59:21

|

1366人浏览过

|

来源于php中文网

原创

  1. class dbBackup {
  2. public $host='localhost'; //数据库地址
  3. public $user='root'; //登录名
  4. public $pwd=''; //密码
  5. public $database; //数据库名
  6. public $charset='utf8'; //数据库连接编码:mysql_set_charset
  7. }
复制代码

二、添加数据库连接function。

  1. /**
  2. * 连接数据库 ...
  3. */
  4. function db() {
  5. $con = mysql_connect($this->host,$this->user,$this->pwd);
  6. if (!$con){
  7. die('Could not connect');
  8. }
  9. $db_selected = mysql_select_db($this->database, $con);
  10. if (!$db_selected) {
  11. die('Can\'t use select db');
  12. }
  13. mysql_set_charset($this->charset);  //设置编码
  14. return $con;
  15. }
复制代码

三、查询数据库表集合

  1. /**
  2. * 表集合 ...
  3. */
  4. function tblist() {
  5. $list=array();
  6. $rs=mysql_query("SHOW TABLES FROM $this->database");
  7. while ($temp=mysql_fetch_row($rs)) {
  8. $list[]=$temp[0];
  9. }
  10. return $list;
  11. }
复制代码

四、查询表结构

  1. /**

  2. * 表结构sql ...
  3. */
  4. function sqlcreate() {
  5. $sql='';
  6. $tb=$this->tblist();
  7. foreach ($tb as $v) {
  8. $rs=mysql_query("show create table $v");
  9. $temp=mysql_fetch_row($rs);
  10. $sql.="-- 表的结构:{$temp[0]} --\r\n";
  11. $sql.="{$temp[1]}";
  12. $sql.=";-- --\r\n\r\n";
  13. }
  14. return $sql;

    PHPB2B
    PHPB2B

    PHP-B2B(原友邻b2b)是一套能够帮助用户,快速建立高效、多功能电子商务网站的php应用程序,本程序采用目前互联网上最流行的LAMP组合(Linux+Apache+Mysql+PHP)开发完成,同时利用Smarty模板技术实现了网站前台与后台的有效分离,用户可以快速地在此基础上开发自己的模板。 友邻php提供了电子商务应用最常见求购、供应、商品、公司库等模块,同时为企业用户提供了一个发布信

    下载
  15. }
复制代码

注:$sql.=";-- --\r\n\r\n"; 每句SQL后面必须加上分号(;)分割,MYSQL导入才能识别。-- -- 是程序对SQL语句分割的标识,可以自定义但必须是注释语句,否则影响SQL语句。\r\n无实际意义用于文本美观。

五、INSERT INTO语句

  1. /**
  2. * 数据插入SQL ...
  3. */
  4. function sqlinsert() {
  5. $sql='';
  6. $tb=$this->tblist();
  7. foreach ($tb as $v) {
  8. $rs=mysql_query("SELECT * FROM $v");
  9. if (!mysql_num_rows($rs)) {//无数据返回
  10. continue;
  11. }
  12. $sql.="-- 表的数据:$v --\r\n";
  13. $sql.="INSERT INTO `$v` VALUES\r\n";
  14. while ($temp=mysql_fetch_row($rs)) {
  15. $sql.='(';
  16. foreach ($temp as $v2) {
  17. if ($v2===null) {
  18. $sql.="NULL,";
  19. }
  20. else {
  21. $v2=mysql_real_escape_string($v2);
  22. $sql.="'$v2',";
  23. }
  24. }
  25. $sql=mb_substr($sql, 0, -1);
  26. $sql.="),\r\n";
  27. }
  28. $sql=mb_substr($sql, 0, -3);
  29. $sql.=";-- --\r\n\r\n";
  30. }
  31. return $sql;
  32. }
复制代码

注意事项: 1.无数据返回时必须跳出本次循环,避免生成多余代码 2.当字段值为(NULL)时,插入字符为(NULL)而不是('NULL'),没有单引号。 3.$v2=mysql_real_escape_string($v2),这是必要的转义 4.mb_substr($sql, 0, -1)、mb_substr($sql, 0, -3),必须去除最后一个逗号(,) 否则SQL语句出错 5.$sql.=";-- --\r\n\r\n",详见第四步注

六、备份操作

  1. /**
  2. * 备份 ...
  3. * @param $filename 文件路径
  4. */
  5. function beifen($filename) {
  6. $this->db(); //连接数据库
  7. $sql=$this->sqlcreate();
  8. $sql2=$this->sqlinsert();
  9. $data=$sql.$sql2;
  10. return file_put_contents($filename, $data);
  11. }
复制代码

七、还原操作

  1. /**
  2. * 还原 ...
  3. * @param $filename 文件路径
  4. */
  5. function huanyuan($filename) {
  6. $this->db(); //连接数据库
  7. //删除数据表
  8. $list=$this->tblist();
  9. $tb='';
  10. foreach ($list as $v) {
  11. $tb.="`$v`,";
  12. }
  13. $tb=mb_substr($tb, 0, -1);
  14. if ($tb) {
  15. $rs=mysql_query("DROP TABLE $tb");
  16. if ($rs===false) {
  17. return false;
  18. }
  19. }
  20. //执行SQL
  21. $str=file_get_contents($filename);
  22. $arr=explode('-- --', $str);
  23. array_pop($arr);
  24. foreach ($arr as $v) {
  25. $rs=mysql_query($v);
  26. if ($rs===false) {
  27. return false;
  28. }
  29. }
  30. return true;
  31. }
复制代码

来看下调用示例。 1,备份示例:

  1. $x=new dbBackup();
  2. $x->database='test';
  3. $rs=$x->beifen('db.sql');
  4. var_dump($rs);
复制代码

2,还原示例:

  1. $x=new dbBackup();
  2. $x->database='test';
  3. $rs=$x->huanyuan('db.sql');
  4. var_dump($rs);
复制代码

完整代码:

  1. /**
  2. * php实现mysql备份与还原
  3. * 整理 程序员之家 bbs.it-home.org
  4. */
  5. class dbBackup {
  6. public $host='localhost'; //数据库地址
  7. public $user='root'; //登录名
  8. public $pwd=''; //密码
  9. public $database; //数据库名
  10. public $charset='utf8'; //数据库连接编码:mysql_set_charset
  11. /**
  12. * 备份 ...
  13. * @param $filename 文件路径
  14. */
  15. function beifen($filename) {
  16. $this->db(); //连接数据库
  17. $sql=$this->sqlcreate();
  18. $sql2=$this->sqlinsert();
  19. $data=$sql.$sql2;
  20. return file_put_contents($filename, $data);
  21. }
  22. /**
  23. * 还原 ...
  24. * @param $filename 文件路径
  25. */
  26. function huanyuan($filename) {
  27. $this->db(); //连接数据库
  28. //删除数据表
  29. $list=$this->tblist();
  30. $tb='';
  31. foreach ($list as $v) {
  32. $tb.="`$v`,";
  33. }
  34. $tb=mb_substr($tb, 0, -1);
  35. if ($tb) {
  36. $rs=mysql_query("DROP TABLE $tb");
  37. if ($rs===false) {
  38. return false;
  39. }
  40. }
  41. //执行SQL
  42. $str=file_get_contents($filename);
  43. $arr=explode('-- --', $str);
  44. array_pop($arr);
  45. foreach ($arr as $v) {
  46. $rs=mysql_query($v);
  47. if ($rs===false) {
  48. return false;
  49. }
  50. }
  51. return true;
  52. }
  53. /**
  54. * 连接数据库 ...
  55. */
  56. function db() {
  57. $con = mysql_connect($this->host,$this->user,$this->pwd);
  58. if (!$con){
  59. die('Could not connect');
  60. }
  61. $db_selected = mysql_select_db($this->database, $con);
  62. if (!$db_selected) {
  63. die('Can\'t use select db');
  64. }
  65. mysql_set_charset($this->charset); //设置编码
  66. return $con;
  67. }
  68. /**
  69. * 表集合 ...
  70. */
  71. function tblist() {
  72. $list=array();
  73. $rs=mysql_query("SHOW TABLES FROM $this->database");
  74. while ($temp=mysql_fetch_row($rs)) {
  75. $list[]=$temp[0];
  76. }
  77. return $list;
  78. }
  79. /**
  80. * 表结构sql ...
  81. */
  82. function sqlcreate() {
  83. $sql='';
  84. $tb=$this->tblist();
  85. foreach ($tb as $v) {
  86. $rs=mysql_query("show create table $v");
  87. $temp=mysql_fetch_row($rs);
  88. $sql.="-- 表的结构:{$temp[0]} --\r\n";
  89. $sql.="{$temp[1]}";
  90. $sql.=";-- --\r\n\r\n";
  91. }
  92. return $sql;

  93. }
  94. /**
  95. * 数据插入SQL ...
  96. */
  97. function sqlinsert() {
  98. $sql='';
  99. $tb=$this->tblist();
  100. foreach ($tb as $v) {
  101. $rs=mysql_query("SELECT * FROM $v");
  102. if (!mysql_num_rows($rs)) {//无数据返回
  103. continue;
  104. }
  105. $sql.="-- 表的数据:$v --\r\n";
  106. $sql.="INSERT INTO `$v` VALUES\r\n";
  107. while ($temp=mysql_fetch_row($rs)) {
  108. $sql.='(';
  109. foreach ($temp as $v2) {
  110. if ($v2===null) {
  111. $sql.="NULL,";
  112. }
  113. else {
  114. $v2=mysql_real_escape_string($v2);
  115. $sql.="'$v2',";
  116. }
  117. }
  118. $sql=mb_substr($sql, 0, -1);
  119. $sql.="),\r\n";
  120. }
  121. $sql=mb_substr($sql, 0, -3);
  122. $sql.=";-- --\r\n\r\n";
  123. }
  124. return $sql;
  125. }
  126. }

    立即学习PHP免费学习笔记(深入)”;

  127. //备份

  128. //$x=new dbBackup();
  129. //$x->database='test';
  130. //$rs=$x->beifen('db.sql');
  131. //var_dump($rs);
  132. //还原

  133. //$x=new dbBackup();
  134. //$x->database='test';
  135. //$rs=$x->huanyuan('db.sql');
  136. //var_dump($rs);
  137. ?>
复制代码
您可能感兴趣的文章: php数据库备份类 分享一个不错的php数据库备份类 php完整备份数据库与备份数据库中指定表的类 php mysql数据库备份类及调用方法 php实现mysql的备份与还原实例代码 php mysql备份的代码(xml应用) php数据备份:单表备份 整表备份 导入数据库


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.4万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号