首页 > 开发 > PHP > 正文

php导出.sql文件,mysql数据库备份程序

2024-05-04 21:59:14
字体:大 中 小
来源:转载
供稿:网友
  1. <?php 
  2. $database='';//数据库名 
  3. $options=array( 
  4.     'hostname' => '',//ip地址 
  5.     'charset' => 'utf8',//编码 
  6.     'filename' => $database.'.sql',//文件名 
  7.     'username' => '', 
  8.     'password' => '' 
  9. ); 
  10. mysql_connect($options['hostname'],$options['username'],$options['password'])or die("不能连接数据库!"); 
  11. mysql_select_db($database) or die("数据库名称错误!"); 
  12. mysql_query("SET NAMES '{$options['charset']}'"); 
  13. $tables = list_tables($database); 
  14. $filename = sprintf($options['filename'],$database); 
  15. $fp = fopen($filename, 'w'); 
  16. foreach ($tables as $table) { 
  17.     dump_table($table, $fp); 
  18. } 
  19. fclose($fp); 
  20. //下载sql文件 
  21. $file_name=$options['filename']; 
  22. Header("Content-type:application/octet-stream"); 
  23. Header("Content-Disposition:attachment;filename=".$file_name); 
  24. readfile($file_name); 
  25. //删除服务器上的sql文件 
  26. unlink($file_name); 
  27. exit; 
  28. //获取表的名称 
  29. function list_tables($database) 
  30. { 
  31.     $rs = mysql_list_tables($database); 
  32.     $tables = array(); 
  33.     while ($row = mysql_fetch_row($rs)) { 
  34.         $tables[] = $row[0]; 
  35.     } 
  36.     mysql_free_result($rs); 
  37.     return $tables; 
  38. } 
  39. //导出数据库 
  40. function dump_table($table, $fp = null) 
  41. { 
  42.     $need_close = false; 
  43.     if (is_null($fp)) { 
  44.         $fp = fopen($table . '.sql', 'w'); 
  45.         $need_close = true; 
  46.     } 
  47. $a=mysql_query("show create table `{$table}`"); 
  48. $row=mysql_fetch_assoc($a);fwrite($fp,$row['Create Table'].';');//导出表结构 
  49.     $rs = mysql_query("SELECT * FROM `{$table}`"); 
  50.     while ($row = mysql_fetch_row($rs)) { 
  51.         fwrite($fp, get_insert_sql($table, $row)); 
  52.     } 
  53.     mysql_free_result($rs); 
  54.     if ($need_close) { 
  55.         fclose($fp); 
  56.     } 
  57. } 
  58. //导出表数据 
  59. function get_insert_sql($table, $row) 
  60. { 
  61.     $sql = "INSERT INTO `{$table}` VALUES ("; 
  62.     $values = array(); 
  63.     foreach ($row as $value) { 
  64.         $values[] = "'" . mysql_real_escape_string($value) . "'"; 
  65.     }//开源代码Vevb.com 
  66.     $sql .= implode(', ', $values) . ");"; 
  67.     return $sql; 
  68. }?>

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