用PHP程序导出备份MYSQL的sql文件

<?php 

function dump_database($database_name, $save_path = './') { 
	ini_set('max_execution_time', 0); 
	echo '备份开始...<br>'; 
	echo '===================================================<br>'; 
	$time = explode(' ', microtime()); 
	$start_time = $time[1] + $time[0]; 
	//打开或创建一个用来存放备份数据库代码的文件 
	$fo = @fopen($save_path.$database_name.'.sql', 'a'); 
	if($fo === false){ echo '文件找不到,或您没有权限打开该文件!'; } 
	//连接数据库 
	$link = @mysql_connect('localhost', 'root', 'root') or die('数据库连接失败,error:'.mysql_error()); 
	//获取该数据库中的表 
	$ret = mysql_list_tables($database_name); $table_list = array();
	 while($table = mysql_fetch_assoc($ret)){ 
         $table_list[] = $table['Tables_in_'.$database_name]; 
         echo '<span id="'.$table['Tables_in_'.$database_name].'">'.$table['Tables_in_'.$database_name].'</span><br>'; 
	 } 
	 foreach($table_list as $table){ 
	 	//获取当前表被创建时的sql语句 
	 	$sql = 'show create table '.$table; 
	 	$create_table_ret = mysql_fetch_assoc(mysql_query($sql)); 
	 	$create_table_sql = 'drop table if exists '.$table.";\n"; 
	 	$create_table_sql .= $create_table_ret['Create Table'].";\n"; 
	 	//获取当前表中的数据并组成插入形式的sql语句
	 	 $sql = 'select * from '.$table; 
	 	 $insert_data_ret = mysql_query($sql); 
	 	 $insert_data_sql = 'insert into '.$table.' values';
	 	  while($row = mysql_fetch_assoc($insert_data_ret)){ 
	 	  	$insert_data_sql .= '('; foreach($row as $key => $val){
	 	  		 $insert_data_sql .= '"'.mysql_real_escape_string($val, $link).'",'; 
	 	  	} 
	 	  	$insert_data_sql = rtrim($insert_data_sql, ',').'),'; 
	 	  } 
	 	  $insert_data_sql = rtrim($insert_data_sql, ',').";\n\n\n"; 
	 	  if(!mysql_num_rows($insert_data_ret)){ 
	 	  	$create_table_sql .= "\n\n"; 
	 	  } 
	 	  fwrite($fo, $create_table_sql); 
	 	  if(mysql_num_rows($insert_data_ret)){ 
	 	  	fwrite($fo, $insert_data_sql); 
	 	  } 
	 	  $innerHTML = $table."[<span style='color: green'>备份完成!</span>]"; 
	 	  $script = '<script>'; 
	 	  $script .= 'document.getElementById("'.$table.'").innerHTML = "'.$innerHTML.'";'; $script .= '</script>'; 
	 	  echo $script; } fclose($fo); 
	 	  $time = explode(' ', microtime()); 
	 	  $end_time = $time[1] + $time[0]; 
	 	  echo '<b>备份完成(共计<span style="color: red">'.count($table_list).'</span>个表),花费时间为:<span style="color: red">', $end_time - $start_time, '</span>秒!</b>'; 
} 
dump_database('mysql', './');



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值