PHP备份还原数据库类(根据网上抄来的代码小改了一下)

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
class BACKSQL{
public $host;
public $user;//数据库账号
public $password;//数据库密码
public $dbname;//数据库名称
public $dir;//存放路径
private $fname;
private $Link_ID=0;    //数据库连接
function __construct($host,$user,$password,$dbname,$dir){
  $this->host=$host;
  $this->user=$user;
  $this->password=$password;
  $this->dbname=$dbname;
  $this->dir=$dir;
}
function db_backup(){
  if(!$this->Link_ID=mysql_connect($this->host,$this->user,$this->password))  //连接mysql数据库
  {
   echo '数据库连接失败,请核对后再试';
   exit;
  }
  if(!mysql_select_db($this->dbname,$this->Link_ID))  //是否存在该数据库
  {
   echo '不存在数据库:'.$this->dbname.',请核对后再试';
   exit;
  }
  mysql_query("set names 'utf8'");
  $mysql= "set charset utf8;\r\n";
  $q1=mysql_query("show tables",$this->Link_ID);
  while($t=mysql_fetch_array($q1)){
   $table=$t[0];
   $q2=mysql_query("show create table `$table`",$this->Link_ID);
   $sql=mysql_fetch_array($q2);
   $mysql.=$sql['Create Table'].";\r\n";
   $q3=mysql_query("select * from `$table`",$this->Link_ID);
   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.="insert into `$table`($keys) values($vals);\r\n";
   }
  }
 
  $filename=$this->dir.$this->dbname.date('Ymjgi').".sql";  //存放路径,默认存放到项目最外层
  $fp = fopen($filename,'w');
  fputs($fp,$mysql);
  fclose($fp);
//   return $filename;
//   echo "数据备份成功";
}
function restore($fname)
{
  if (file_exists($fname)) {
   $sql_value="";
   $cg=0;
   $sb=0;
   $sqls=file($fname);
   foreach($sqls as $sql)
   {
    $sql_value.=$sql;
   }
   $a=explode(";\r\n", $sql_value);  //根据";\r\n"条件对数据库中分条执行
   $total=count($a)-1;
   mysql_query("set names 'utf8'",$this->Link_ID);
   for ($i=0;$i<$total;$i++)
   {
   mysql_query("set names 'utf8'",$this->Link_ID);
   //执行命令
   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备份文件不存在,请检查文件路径是否正确!";
  }
}
function db_restore($filename){
  $this->Link_ID=mysql_connect($this->host,$this->user,$this->password);
  mysql_query("DROP DATABASE ".$this->dbname,$this->Link_ID);
  mysql_query("CREATE DATABASE ".$this->dbname,$this->Link_ID);
  mysql_select_db($this->dbname,$this->Link_ID);
  $mysql_file=$this->dir.$filename; //指定要恢复的MySQL备份文件路径,请自已修改此路径
  restore($mysql_file); //执行MySQL恢复命令
}
function __destruct(){
  if(0 != $this->Link_ID){
   mysql_close($this->Link_ID);
  }
}
}

$back=new BACKSQL("localhost", "root", "root", "zq", "./");
echo $back->db_backup();//备份数据库
echo "<br/>备份成功~";
//$back->db_restore("zq201204201105.sql");//还原数据库
/*
*
$host="localhost"; 
$user="root";//数据库账号
$password="root";//数据库密码
$dbname="zq";//数据库名称
$dir="./";//存放路径

//这里的账号、密码、名称都是从页面传过来的
if(!mysql_connect($host,$user,$password))  //连接mysql数据库
{
echo '数据库连接失败,请核对后再试';
exit;
}
if(!mysql_select_db($dbname))  //是否存在该数据库
{
echo '不存在数据库:'.$dbname.',请核对后再试';
exit;
}
mysql_query("set names 'utf8'");
$mysql= "set charset utf8;\r\n"; 
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1)){
    $table=$t[0];
    $q2=mysql_query("show create table `$table`");
    $sql=mysql_fetch_array($q2);
    $mysql.=$sql['Create Table'].";\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.="insert into `$table`($keys) values($vals);\r\n";
    }
}

$filename=$dir.$dbname.date('Ymjgi').".sql";  //存放路径,默认存放到项目最外层
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "数据备份成功";
*/
?>

<?php
exit;
$filename = "zq20120420950.sql";
$host="localhost"; //主机名
$user="root"; //MYSQL用户名
$password="root"; //密码
$dbname="zq"; //在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
$dir="./";//存放路径
mysql_connect($host,$user,$password);
mysql_query("DROP DATABASE ".$dbname);
mysql_query("CREATE DATABASE ".$dbname);
mysql_select_db($dbname);
$mysql_file=$dir.$filename; //指定要恢复的MySQL备份文件路径,请自已修改此路径
restore($mysql_file); //执行MySQL恢复命令
function restore($fname)
{
  if (file_exists($fname)) {
   $sql_value="";
   $cg=0;
   $sb=0;
   $sqls=file($fname);
   foreach($sqls as $sql)
   {
    $sql_value.=$sql;
   }
   $a=explode(";\r\n", $sql_value);  //根据";\r\n"条件对数据库中分条执行
   $total=count($a)-1;
   mysql_query("set names 'utf8'");
   for ($i=0;$i<$total;$i++)
   {
    mysql_query("set names '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备份文件不存在,请检查文件路径是否正确!";
  }
}
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值