下载帝国网站管理系统5.0正式版
 帝国论坛技术交流区网络编程PHP通用数据库备份类
帝国CMS5.0正式版发布
中客:空间产品随时可无条件退款!
测试:生成20万数据共用107分钟
《帝国下载系统》全面免费
Mysql大数据备份工具下载
帝国软件旗下新站 - 站长工具
1G双线帝国空间+200M数据库=158
帝国CMS教程下载
主题:PHP通用数据库备份类 [加入收藏夹]   

天浪歌
用户头衔:嘉宾

精华贴   :3
发贴数   :1726
经验值   :3935
注册时间:2006-09-14
信息 搜索 好友 发送悄悄话 《帝国网站管理系统》基础教程下载】   [第 1 楼]
PHP通用数据库备份类
<?php
/*数据库备份:NOTICE:此类要添加数据库连接才能正常工作2006年8月13日,此类继承了一个数据库操作的类
power by:antsnet.net
  E-mail:antsnet@163.com
*/
Class Back_up_database extends dbstuff{
//类开始
var $HOST;
var $USERNAME;
var $PASSWORD;
var $DATABASE;
function Back_up_database($host,$username,$password,$database){
  //初始化数据库连接
  $this->HOST=$host;
  $this->USERNAME=$username;
  $this->PASSWORD=$password;
  $this->DATABASE=$database;
  $Connection=$this->connect($this->HOST,$this->USERNAME,$this->PASSWORD,$this->DATABASE,$pconnect);
  $this->Connection=$Connection;
}
//取得数据库中的表
function get_table_name($database){
  $this->Connection;
  $result=mysql_list_tables($database);
  $i=0;
  while($i<mysql_num_rows($result)){
   $tb_name[$i]=mysql_tablename($result,$i);
   $table_name.= $tb_name[$i].",";
   $i++;
  }
  $this->table_name=substr($table_name,0,-1);
  return $this->table_name;
}

//取得每个表中的FIELDS和属性并生成CREATE TABLE语句
function get_table_fields($table_name){
  $this->Connection;
  $createtable=dbstuff::query("SHOW CREATE TABLE $table_name");
  $create=dbstuff::fetch_row($createtable);
  $tabledump .="DROP TABLE IF EXISTS $table_name;\n";
  $tabledump .= $create[1].";\n\n";
  $this->$table_name=$tabledump;
  return $this->$table_name;
}
//取得表中的数据并生成ISERT INTO 语句
function get_insert($table_insert_name){
$this->Connection;
   $rows = dbstuff::query("SELECT * FROM $table_insert_name");
$numfields = dbstuff::num_fields($rows);
$numrows = dbstuff::num_rows($rows);
while ($row = dbstuff::fetch_row($rows)) {
  $comma = "";
  $tabledump .= "INSERT INTO $table_insert_name VALUES(";
  for($i = 0; $i < $numfields; $i++) {
   $tabledump .= $comma."'".mysql_escape_string($row[$i])."'";
   $comma = ",";
  }
  $tabledump .= ");\n";
}
$this->tabledump=$tabledump;
return $this->tabledump;
}

//获取所有数据并连接成新的字符串并将它写入文件中.sql
function get_string($database_name,$file_path_name){
$time=date("Y-m-d H:j");
$date_time=date("YmdHis");
$file_path_name=$file_path_name.$date_time.".sql";
$version="Antsent_Web_Studio Database BackUp V1.01";
$idstring = '# Identify: '.base64_encode("$time,$version")."\n";
$head_info="$idstring".
        "#\n".
     "# Antsnet_Web! The Basic Class Of BackUp DataBase\n".
     "# Version: Antsnet Web! $version\n".
     "# Time: $time\n".
     "# Type: Class Of BackUp DataBase\n".
     "# Antsnet_Web_Studio! Home: http://www.antsnet.net\n".
     "# Please visit our website for newest infomation about Antsnet_Web_Studio!\n".
     "# --------------------------------------------------------\n\n\n";
$table_name=$this->get_table_name($database_name);
$array_table=explode(",",$table_name);
for($i=0;$i<count($array_table);$i++){
   $table_string.=$this->get_table_fields($array_table[$i]);
   $table_insert.=$this->get_insert($array_table[$i]);
}
$count_string=$head_info.$table_string.$table_insert;
//return $count_string;
$write_status=$this->write_file($file_path_name,$count_string);
return $write_status;
}

//写入一个文件
function write_file($file_path,$file_contents){
   if(@!$fp=fopen($file_path,'w')){
      $status="<font color=\"red\">This File Could Not Open Or Read.</font>";
   }else{
  flock($fp,3);
  fwrite($fp,$file_contents);
  fclose($fp);
  $status="Write TO The File Success.Success To Backup The Database.";
   }
   return $status;
}

//读取文件
function read_file($file_path){
     if(@!$fp= fopen($file_path,'r')){
     $status="<font color=\"red\">This File Could Not Open Or Read.</font>";
     }else{
     $status=fread($fp,filesize($file_path));
     fclose($fp);
     }
     return $status;
}

//分离SQL语句
function splitsql($sql){
$sql = str_replace("\r", "\n", $sql);
$ret = array();
$num = 0;
$queriesarray = explode(";\n", trim($sql));
unset($sql);
foreach($queriesarray as $query) {
  $queries = explode("\n", trim($query));
  foreach($queries as $query) {
   $ret[$num] .= $query[0] == "#" ? NULL : $query;
  }
  $num++;
}
return($ret);
}
//恢复数据
function db_restore($file_restore){
$content=$this->read_file($file_restore);
$this->Connection;
$sqlquery =$this->splitsql($content);
   unset($content);
   foreach($sqlquery as $sql) {
    if(trim($sql) != '') {
     $status=dbstuff::query($sql);
    }

   }
   if(!status){
   $msg="Import False.";
   }else{
    $msg="Import Success.";
   }
  return $msg;
}
//类结束
}
/*具体用法:
$bak=new Back_up_database("dbserver","dbusername","dbpassword","db");
//$status=$bak->get_string("advertisment");
$str=$bak->get_string("advertisment","bak.sql");
echo $str;
*/
>



ECMSer
有事就Q我    3260602    3260602@qq.com
帝国教程之猪头系列
2007-08-19 00:10:38 已设置保密 顶部 回复 引用 报告 编辑 删除


快速回复
内容

使用EBB代码
使用smile代码
显示签名
自动分析url
自动分析img
表情                   
                
    (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1