0

0

备份mysql数据的php代码

php中文网

php中文网

发布时间:2016-07-25 08:45:50

|

983人浏览过

|

来源于php中文网

原创

  1. #####################
  2. //CONFIGURATIONS
  3. #####################
  4. // Define the name of the backup directory
  5. define('BACKUP_DIR', './myBackups' ) ;
  6. // Define Database Credentials
  7. define('HOST', 'localhost' ) ;
  8. define('USER', 'testd!b' ) ;
  9. define('PASSWORD', 'k^$2y4n9@#VV' ) ;
  10. define('DB_NAME', 'test123' ) ;
  11. /*
  12. Define the filename for the sql file
  13. If you plan to upload the file to Amazon's S3 service , use only lower-case letters
  14. */
  15. $fileName = 'mysqlbackup--' . date('d-m-Y') . '@'.date('h.i.s').'.sql' ;
  16. // Set execution time limit
  17. if(function_exists('max_execution_time')) {
  18. if( ini_get('max_execution_time') > 0 ) set_time_limit(0) ;
  19. }
  20. ###########################
  21. //END OF CONFIGURATIONS
  22. ###########################
  23. // Check if directory is already created and has the proper permissions
  24. if (!file_exists(BACKUP_DIR)) mkdir(BACKUP_DIR , 0700) ;
  25. if (!is_writable(BACKUP_DIR)) chmod(BACKUP_DIR , 0700) ;
  26. // Create an ".htaccess" file , it will restrict direct accss to the backup-directory .
  27. $content = 'deny from all' ;
  28. $file = new SplFileObject(BACKUP_DIR . '/.htaccess', "w") ;
  29. $file->fwrite($content) ;
  30. $mysqli = new mysqli(HOST , USER , PASSWORD , DB_NAME) ;
  31. if (mysqli_connect_errno())
  32. {
  33. printf("Connect failed: %s", mysqli_connect_error());
  34. exit();
  35. }
  36. // Introduction information
  37. $return .= "--\n";
  38. $return .= "-- A Mysql Backup System \n";
  39. $return .= "--\n";
  40. $return .= '-- Export created: ' . date("Y/m/d") . ' on ' . date("h:i") . "\n\n\n";
  41. $return = "--\n";
  42. $return .= "-- Database : " . DB_NAME . "\n";
  43. $return .= "--\n";
  44. $return .= "-- --------------------------------------------------\n";
  45. $return .= "-- ---------------------------------------------------\n";
  46. $return .= 'SET AUTOCOMMIT = 0 ;' ."\n" ;
  47. $return .= 'SET FOREIGN_KEY_CHECKS=0 ;' ."\n" ;
  48. $tables = array() ;
  49. // Exploring what tables this database has
  50. $result = $mysqli->query('SHOW TABLES' ) ;
  51. // Cycle through "$result" and put content into an array
  52. while ($row = $result->fetch_row())
  53. {
  54. $tables[] = $row[0] ;
  55. }
  56. // Cycle through each table
  57. foreach($tables as $table)
  58. {
  59. // Get content of each table
  60. $result = $mysqli->query('SELECT * FROM '. $table) ;
  61. // Get number of fields (columns) of each table
  62. $num_fields = $mysqli->field_count ;
  63. // Add table information
  64. $return .= "--\n" ;
  65. $return .= '-- Tabel structure for table `' . $table . '`' . "\n" ;
  66. $return .= "--\n" ;
  67. $return.= 'DROP TABLE IF EXISTS `'.$table.'`;' . "\n" ;
  68. // Get the table-shema
  69. $shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
  70. // Extract table shema
  71. $tableshema = $shema->fetch_row() ;
  72. // Append table-shema into code
  73. $return.= $tableshema[1].";" . "\n\n" ;
  74. // Cycle through each table-row
  75. while($rowdata = $result->fetch_row())
  76. {
  77. // Prepare code that will insert data into table
  78. $return .= 'INSERT INTO `'.$table .'` VALUES ( ' ;
  79. // Extract data of each row
  80. for($i=0; $i
  81. {
  82. $return .= '"'.$rowdata[$i] . "\"," ;
  83. }
  84. // Let's remove the last comma
  85. $return = substr("$return", 0, -1) ;
  86. $return .= ");" ."\n" ;
  87. }
  88. $return .= "\n\n" ;
  89. }
  90. // Close the connection
  91. $mysqli->close() ;
  92. $return .= 'SET FOREIGN_KEY_CHECKS = 1 ; ' . "\n" ;
  93. $return .= 'COMMIT ; ' . "\n" ;
  94. $return .= 'SET AUTOCOMMIT = 1 ; ' . "\n" ;
  95. //$file = file_put_contents($fileName , $return) ;
  96. $zip = new ZipArchive() ;
  97. $resOpen = $zip->open(BACKUP_DIR . '/' .$fileName.".zip" , ZIPARCHIVE::CREATE) ;
  98. if( $resOpen ){
  99. $zip->addFromString( $fileName , "$return" ) ;
  100. }
  101. $zip->close() ;
  102. $fileSize = get_file_size_unit(filesize(BACKUP_DIR . "/". $fileName . '.zip')) ;
  103. $message =
  104. BACKUP completed ,


  105. the archive has the name of : $fileName and it's file-size is : $fileSize .
  106. This zip archive can't be accessed via a web browser , as it's stored into a protected directory .
  107. It's highly recomended to transfer this backup to another filesystem , use your favorite FTP client to download the archieve .
  108. msg;
  109. echo $message ;
  110. // Function to append proper Unit after file-size .
  111. function get_file_size_unit($file_size){
  112. switch (true) {
  113. case ($file_size/1024
  114. return intval($file_size ) ." Bytes" ;
  115. break;
  116. case ($file_size/1024 >= 1 && $file_size/(1024*1024)
  117. return intval($file_size/1024) ." KB" ;
  118. break;
  119. default:
  120. return intval($file_size/(1024*1024)) ." MB" ;
  121. }
  122. }
复制代码

mysql, 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官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

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

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

194

2026.02.13

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

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

91

2026.02.13

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

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

20

2026.02.13

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

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

54

2026.02.13

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

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

29

2026.02.12

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

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

15

2026.02.12

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

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

598

2026.02.12

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

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

56

2026.02.12

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.7万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 2.2万人学习

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

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