<?php
//接受文件,数据库名称
$name=$_FILES['database_sql']['name'];
$db_name=substr($_FILES['database_sql']['name'],0,strpos($_FILES['database_sql']['name'],'.'));
//将文件存在某个地方
move_uploaded_file($_FILES['database_sql']['tmp_name'],ROOT_PATH.'public/database/daoru/'.$name);
$host="localhost";//主机名
$user="root";//MYSQL用户名
$password="root";//密码
$dbname=Request::instance()->post('database_name');//在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
$mysql_file=ROOT_PATH.'public/database/daoru/'.$db_name.'.sql';//指定要恢复的MySQL备份文件路径,请自已修改此路径
restore($mysql_file,$host,$dbname,$user,$password);//执行MySQL恢复命令
functionrestore($fname,$host,$dbname,$user,$password)
{
$pdo=new\PDO("mysql:host=$host;dbname=$dbname",$user,$password);
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);
$pdo->query("set names 'utf8'");
for($i=0;$i<$total;$i++)
{
$pdo->query("set names 'utf8'");
//执行命令
if($pdo->query($a[$i]))
{
$cg+=1;
}
else
{
$sb+=1;
$sb_command[$sb]=$a[$i];
}
}
echo"操作完毕,共处理$total条命令,成功$cg条,失败$sb条";
//显示错误信息
if($sb>0)
{
echo"
失败命令如下:
";
for($ii=1;$ii<=$sb;$ii++)
{
echo"
第 ".$ii." 条命令(内容如下):
".$sb_command[$ii]."
";
}
}//-----------------------------------------------------------
}else{
echo"MySQL备份文件不存在,请检查文件路径是否正确!";
}
}