当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-12 09:44:42 浏览: 评论:0 
  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($databaseor 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. fclose($fp); 
  19. //下载sql文件 
  20. $file_name=$options['filename']; 
  21. Header("Content-type:application/octet-stream"); 
  22. Header("Content-Disposition:attachment;filename=".$file_name); 
  23. readfile($file_name); 
  24. //删除服务器上的sql文件 
  25. unlink($file_name); 
  26. exit
  27. //获取表的名称 
  28. function list_tables($database
  29.     $rs = mysql_list_tables($database); 
  30.     $tables = array(); 
  31.     while ($row = mysql_fetch_row($rs)) { 
  32.         $tables[] = $row[0]; 
  33.     } 
  34.     mysql_free_result($rs); 
  35.     return $tables
  36. //导出数据库 
  37. function dump_table($table$fp = null) 
  38.     $need_close = false; 
  39.     if (is_null($fp)) { 
  40.         $fp = fopen($table . '.sql''w'); 
  41.         $need_close = true; 
  42.     } 
  43. $a=mysql_query("show create table `{$table}`"); 
  44. $row=mysql_fetch_assoc($a);fwrite($fp,$row['Create Table'].';');//导出表结构 
  45.     $rs = mysql_query("SELECT * FROM `{$table}`"); 
  46.     while ($row = mysql_fetch_row($rs)) { 
  47.         fwrite($fp, get_insert_sql($table$row)); 
  48.     } 
  49.     mysql_free_result($rs); 
  50.     if ($need_close) { 
  51.         fclose($fp); 
  52.     } 
  53. //导出表数据 
  54. function get_insert_sql($table$row
  55.     $sql = "INSERT INTO `{$table}` VALUES ("
  56.     $values = array(); 
  57.     foreach ($row as $value) { 
  58.         $values[] = "'" . mysql_real_escape_string($value) . "'"
  59.     }//开源代码phpfensi.com 
  60.     $sql .= implode(', '$values) . ");"
  61.     return $sql
  62. }?>

Tags: php导出 sql mysql数据备份

分享到: