php简单备份与还原MySql的方法
本文实例讲述了php简单备份与还原MySql的方法。分享给大家供大家参考,具体如下:
一、备份:
<?php header("content-Type:text/html;charset=utf-8"); //备份数据库 $host="localhost"; $user="root";//数据库账号 $password="123456";//数据库密码 $dbname="test";//数据库名称 //这里的账号、密码、名称都是从页面传过来的 if(!mysql_connect($host,$user,$password))//连接mysql数据库 { echo'数据库连接失败,请核对后再试'; exit; } if(!mysql_select_db($dbname))//是否存在该数据库 { echo'不存在数据库:'.$dbname.',请核对后再试'; exit; } mysql_query("setnames'utf8'"); $mysql="setcharsetutf8;\r\n"; $q1=mysql_query("showtables"); while($t=mysql_fetch_array($q1)){ $table=$t[0]; $q2=mysql_query("showcreatetable`$table`"); $sql=mysql_fetch_array($q2); $mysql.=$sql['CreateTable'].";\r\n"; $q3=mysql_query("select*from`$table`"); while($data=mysql_fetch_assoc($q3)){ $keys=array_keys($data); $keys=array_map('addslashes',$keys); $keys=join('`,`',$keys); $keys="`".$keys."`"; $vals=array_values($data); $vals=array_map('addslashes',$vals); $vals=join("','",$vals); $vals="'".$vals."'"; $mysql.="insertinto`$table`($keys)values($vals);\r\n"; } } $filename="data/".$dbname.date('Ymjgi').".sql";//存放路径,默认存放到项目最外层 $fp=fopen($filename,'w'); fputs($fp,$mysql); fclose($fp); echo"数据备份成功"; ?>
二、还原
<!-- author:果冻 qq:52091199 blog:http://wyg517.blog.163.com --> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <?php $filename="test20101216923.sql"; $host="localhost";//主机名 $user="root";//MYSQL用户名 $password="123456";//密码 $dbname="test";//在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名 mysql_connect($host,$user,$password); mysql_select_db($dbname); $mysql_file="data/".$filename;//指定要恢复的MySQL备份文件路径,请自已修改此路径 restore($mysql_file);//执行MySQL恢复命令 functionrestore($fname) { if(file_exists($fname)){ $sql_value=""; $cg=0; $sb=0; $sqls=file($fname); foreach($sqlsas$sql) { $sql_value.=$sql; } $a=explode(";\r\n",$sql_value);//根据";\r\n"条件对数据库中分条执行 $total=count($a)-1; mysql_query("setnames'utf8'"); for($i=0;$i<$total;$i++) { mysql_query("setnames'utf8'"); //执行命令 if(mysql_query($a[$i])) { $cg+=1; } else { $sb+=1; $sb_command[$sb]=$a[$i]; } } echo"操作完毕,共处理$total条命令,成功$cg条,失败$sb条"; //显示错误信息 if($sb>0) { echo"<hr><br><br>失败命令如下:<br>"; for($ii=1;$ii<=$sb;$ii++) { echo"<p><b>第".$ii."条命令(内容如下):</b><br>".$sb_command[$ii]."</p><br>"; } }//----------------------------------------------------------- }else{ echo"MySQL备份文件不存在,请检查文件路径是否正确!"; } } ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。