Discuz教程网

PHP备份/还原MySQL数据库的代码

[复制链接]
authicon 诸葛晓明 发表于 2011-1-12 08:31:02 | 显示全部楼层 |阅读模式
之前是采用PHP读取数据库结构和内容,然后写文件,这样可能会导致导出的文件不一定能百分百导入到MySQL中去,想想之后采用MySQL自带的导入导出命令最保险
-
-
以下是代码:
一、备份数据库并下载到本地【db_backup.php】
复制代码 代码如下:

  1. <?php
  2. // 设置SQL文件保存文件名
  3. $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
  4. // 所保存的文件名
  5. header("Content-disposition:filename=".$filename);
  6. header("Content-type:application/octetstream");
  7. header("Pragma:no-cache");
  8. header("Expires:0");
  9. // 获取当前页面文件路径,SQL文件就导出到此文件夹内
  10. $tmpFile = (dirname(__FILE__))."\".$filename;
  11. // 用MySQLDump命令导出数据库
  12. exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
  13. $file = fopen($tmpFile, "r"); // 打开文件
  14. echo fread($file,filesize($tmpFile));
  15. fclose($file);
  16. exit;
  17. ?>
复制代码

二、还原数据库【db_restore.php】
复制代码 代码如下:


  1. <form id="form1" name="form1" method="post" action="">
  2. 【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />
  3. <input id="submit" name="submit" type="submit" value="还原" />
  4. </form>
  5. <?php
  6. // 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可;
  7. require_once((dirname(__FILE__).'/../../include/config.php'));
  8. if ( isset ( $_POST['sqlFile'] ) )
  9. {
  10. $file_name = $_POST['sqlFile']; //要导入的SQL文件名
  11. $dbhost = $cfg_dbhost; //数据库主机名
  12. $dbuser = $cfg_dbuser; //数据库用户名
  13. $dbpass = $cfg_dbpwd; //数据库密码
  14. $dbname = $cfg_dbname; //数据库名
  15. set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入
  16. $fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件
  17. mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库
  18. mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库
  19. echo "<p>正在清空数据库,请稍等....<br>";
  20. $result = mysql_query("SHOW tables");
  21. while ($currow=mysql_fetch_array($result))
  22. {
  23. mysql_query("drop TABLE IF EXISTS $currow[0]");
  24. echo "清空数据表【".$currow[0]."】成功!<br>";
  25. }
  26. echo "<br>恭喜你清理MYSQL成功<br>";
  27. echo "正在执行导入数据库操作<br>";
  28. // 导入数据库的MySQL命令
  29. exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);
  30. echo "<br>导入完成!";
  31. mysql_close();
  32. }
  33. ?>
复制代码




上一篇:php function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
下一篇:php循环检测目录是否存在并创建
authicon 21585151 发表于 2011-6-22 05:02:44 | 显示全部楼层
继续来索要
authicon NicoleOnly 发表于 2011-6-22 13:00:39 | 显示全部楼层
看帖必回
authicon summmer 发表于 2011-6-23 00:59:57 | 显示全部楼层
好东东下下来看看
authicon kikiya11 发表于 2011-6-23 07:00:07 | 显示全部楼层
很好 很强大。。谢谢分享
authicon YY大兔子 发表于 2011-6-26 13:59:48 | 显示全部楼层
前来看看那
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-3 07:55

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表