PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 基础文章 >> 

PHP通用数据库备份类示例

PHP通用数据库备份类示例

来源:互联网  作者:未知  发布时间:2007-12-27
数据库备份类
以下为引用的内容:
<?php
/*数据库备份:NOTICE:此类要添加数据库连接才能正常工作,此类继承了一个数据库操作的类
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;
*/
>
Tags: 备份   数据库   通用     function   return   php   数据   数据库备份   备份类   示例    
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号