首页 >php教程 >php手册 >php导出.sql文件,mysql数据库备份程序

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

WBOY
WBOY原创
2016-05-24 13:25:371046浏览

<?php 
	$database=&#39;&#39;;//数据库名 
	$options=array( 
	    &#39;hostname&#39; => &#39;&#39;,//ip地址 
	    &#39;charset&#39; => &#39;utf8&#39;,//编码 
	    &#39;filename&#39; => $database.&#39;.sql&#39;,//文件名 
	    &#39;username&#39; => &#39;&#39;, 
	    &#39;password&#39; => &#39;&#39; 
	); 
	mysql_connect($options[&#39;hostname&#39;],$options[&#39;username&#39;],$options[&#39;password&#39;])or die("不能连接数据库!"); 
	mysql_select_db($database) or die("数据库名称错误!"); 
	mysql_query("SET NAMES &#39;{$options[&#39;charset&#39;]}&#39;"); 
	$tables = list_tables($database); 
	$filename = sprintf($options[&#39;filename&#39;],$database); 
	$fp = fopen($filename, &#39;w&#39;); 
	foreach ($tables as $table) { 
	    dump_table($table, $fp); 
	} 
	fclose($fp); 
	//下载sql文件 
	$file_name=$options[&#39;filename&#39;]; 
	Header("Content-type:application/octet-stream"); 
	Header("Content-Disposition:attachment;filename=".$file_name); 
	readfile($file_name); 
	//删除服务器上的sql文件 
	unlink($file_name); 
	exit; 
	//获取表的名称 
	function list_tables($database) 
	{ 
	    $rs = mysql_list_tables($database); 
	    $tables = array(); 
	    while ($row = mysql_fetch_row($rs)) { 
	        $tables[] = $row[0]; 
	    } 
	    mysql_free_result($rs); 
	    return $tables; 
	} 
	//导出数据库 
	function dump_table($table, $fp = null) 
	{ 
	    $need_close = false; 
	    if (is_null($fp)) { 
	        $fp = fopen($table . &#39;.sql&#39;, &#39;w&#39;); 
	        $need_close = true; 
	    } 
	$a=mysql_query("show create table `{$table}`"); 
	$row=mysql_fetch_assoc($a);fwrite($fp,$row[&#39;Create Table&#39;].&#39;;&#39;);//导出表结构 
	    $rs = mysql_query("SELECT * FROM `{$table}`"); 
	    while ($row = mysql_fetch_row($rs)) { 
	        fwrite($fp, get_insert_sql($table, $row)); 
	    } 
	    mysql_free_result($rs); 
	    if ($need_close) { 
	        fclose($fp); 
	    } 
	} 
	//导出表数据 
	function get_insert_sql($table, $row) 
	{ 
	    $sql = "INSERT INTO `{$table}` VALUES ("; 
	    $values = array(); 
	    foreach ($row as $value) { 
	        $values[] = "&#39;" . mysql_real_escape_string($value) . "&#39;"; 
	    }//开源代码phprm.com 
	    $sql .= implode(&#39;, &#39;, $values) . ");"; 
	    return $sql; 
	}

本文地址:

转载随意,但请附上文章地址:-)

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn