首页 > 开发 > PHP > 正文

php备份数据库类分享

2024-05-04 23:34:12
字体:大 中 小
来源:转载
供稿:网友

本文实例讲述了php实现MySQL数据库备份类。分享给大家供大家参考。具体分析如下:这是一个非常简单的利用php来备份mysql数据库的类文件,我们只要简单的配置好连接地址用户名与数据库即可

php备份数据库类分享

 

 
  1. <?php 
  2. /** 
  3. *  
  4. * @name php备份数据库  
  5. * @param string $DbHost 连接主机 
  6. * @param string $DbUser 用户名 
  7. * @param string $DbPwd 连接密码 
  8. * @param string $DbName 要备份的数据库 
  9. * @param string $saveFileName 要保存的文件名, 默认文件保存在当前文件夹中,以日期作区分 
  10. * @return Null 
  11. * @example backupMySqlData('localhost', 'root', '123456', 'YourDbName'); 
  12. * 
  13. */ 
  14. function backupMySqlData($DbHost, $DbUser, $DbPwd, $DbName, $saveFileName = '') 
  15. { 
  16. header("Content-type:text/html;charset=utf-8"); 
  17. error_reporting(0); 
  18. set_time_limit(0); 
  19.  
  20. echo '数据备份中,请稍候......<br />'; 
  21.  
  22. $link = mysql_connect($DbHost, $DbUser, $DbPwd) or die('数据库连接失败: ' . mysql_error()); 
  23. mysql_select_db($DbName) or die('数据库连接失败: ' . mysql_error()); 
  24. mysql_query('set names utf8'); 
  25.  
  26. // 声明变量 
  27. $isDropInfo = ''; 
  28. $insertSQL = ''; 
  29. $row = array(); 
  30. $tables = array(); 
  31. $tableStructure = array(); 
  32. $fileName = ($saveFileName ? $saveFileName : 'MySQL_data_bakeup_') . date('YmdHis') . '.sql'; 
  33.  
  34. // 枚举该数据库所有的表 
  35. $res = mysql_query("SHOW TABLES FROM $DbName"); 
  36. while ($row = mysql_fetch_row($res)) { 
  37.  
  38. $tables[] = $row[0]; 
  39.  
  40. } 
  41. mysql_free_result($res); 
  42.  
  43. // 枚举所有表的创建语句 
  44. foreach ($tables as $val) { 
  45.  
  46. $res = mysql_query("show create table $val", $link); 
  47. $row = mysql_fetch_row($res); 
  48.  
  49. $isDropInfo = "DROP TABLE IF EXISTS `" . $val . "`;/r/n"; 
  50. $tableStructure = $isDropInfo . $row[1] . ";/r/n"; 
  51.  
  52. file_put_contents($fileName, $tableStructure, FILE_APPEND); 
  53. mysql_free_result($res); 
  54. } 
  55.  
  56. // 枚举所有表的INSERT语句 
  57. foreach ($tables as $val) { 
  58.  
  59. $res = mysql_query("select * from $val"); 
  60.  
  61. // 没有数据的表不执行insert 
  62. while ($row = mysql_fetch_row($res)) { 
  63.  
  64. $sqlStr = "INSERT INTO `".$val."` VALUES ("; 
  65.  
  66. foreach($row as $v){ 
  67.  
  68. $sqlStr .= "'$v',"; 
  69.  
  70. } 
  71. //去掉最后一个逗号 
  72. $sqlStr = substr($sqlStr, 0, strlen($sqlStr) - 1); 
  73. $sqlStr .= ");/r/n"; 
  74.  
  75. file_put_contents($fileName, $sqlStr, FILE_APPEND); 
  76. } 
  77. mysql_free_result($res); 
  78. } 
  79.  
  80. echo '数据备份成功!'; 
  81. } 
  82.    // 调用此方法  
  83. backupMySqlData('localhost', 'root', '123456', 'YouDbName');  
  84. ?> 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表