本篇文章是对php备份数据库代码(生成word,excel,json,xml,sql)进行了详细的分析介绍,需要的朋友参考下
单表备份
代码:
复制代码 代码如下:
conn=mysql_connect($host,$user,$pass))    
die(can't connect to mysql sever);    
mysql_select_db($db,$this->conn);    
mysql_query(set names 'utf-8');    
    }
function execute($sql)    
    {    
return mysql_query($sql,$this->conn);    
    }
function findcount($sql)    
    {    
$result=$this->execute($sql);    
return mysql_num_rows($result);    
    }
function findbysql($sql)    
    {    
$array=array();    
$result=mysql_query($sql);    
$i=0;    
while($row=mysql_fetch_assoc($result))    
{    
$array[$i]=$row;
$i++;    
}    
return $array;    
    }
//$con的几种情况    
    //空:返回全部记录    
    //array:eg. array('id'=>'1') 返回id=1的记录    
    //string :eg. 'id=1' 返回id=1的记录    
    function toextjson($table,$start=0,$limit=10,$cons=)    
    {    
$sql=$this->generatesql($table,$cons);    
$totalnum=$this->findcount($sql);    
$result=$this->findbysql($sql. limit .$start. ,.$limit);    
$resultnum = count($result);//当前结果数    
$str=;    
$str.= {;    
$str.= 'totalcount':'$totalnum',;    
$str.='rows':;    
$str.=[;    
for($i=0;$i$str.={;
$count=count($result[$i]);    
$j=1;    
foreach($result[$i] as $key=>$val)    
{    
if($j{    
$str.='.$key.':'.$val.',;    
}    
elseif($j==$count)    
{    
$str.='.$key.':'.$val.';    
}    
$j++;    
}
$str.=};    
if ($i != $resultnum-1) {    
$str.= ,;    
}    
}    
$str.=];    
$str.=};    
return $str;
    }
function generatesql($table,$cons)    
    {    
$sql=;//sql条件    
$sql=select * from .$table;    
if($cons!=)    
{    
if(is_array($cons))    
{    
$k=0;    
foreach($cons as $key=>$val)    
{    
if($k==0)    
{    
$sql.=where ';    
$sql.=$key;    
$sql.='=';    
$sql.=$val.';    
}else  
{    
$sql.=and ';    
$sql.=$key;    
$sql.='=';    
$sql.=$val.';    
}    
$k++;    
}    
}else  
{    
$sql.= where .$cons;    
}    
}    
return $sql;    
    }
function toextxml($table,$start=0,$limit=10,$cons=)    
    {    
$sql=$this->generatesql($table,$cons);    
$totalnum=$this->findcount($sql);    
$result=$this->findbysql($sql. limit .$start. ,.$limit);    
$resultnum = count($result);//当前结果数    
header(content-type: text/xml);    
$xml=\n;    
$xml.=\n;    
$xml.=\t.$totalnum.\n;    
$xml.=\t\n;    
for($i=0;$i$xml.=\t\t\n;    
foreach($result[$i] as $key=>$val)    
$xml.=\t\t\t.$val..$key.>\n;    
$xml.=\t\t\n;    
}    
$xml.=\t\n;    
$xml.=\n;    
return $xml;    
    }
//输出word表格    
    function toword($table,$mapping,$filename)    
    {    
header('content-type: application/doc');
header('content-disposition: attachment; filename='.$filename.'.doc');
echo 'xmlns:w=urn:schemas-microsoft-com:office:word    
xmlns=[url=http://www.w3.org/tr/rec-html40][/url]>
'.$filename.'
';
echo'';    
if(is_array($mapping))    
{    
foreach($mapping as $key=>$val)    
echo''.$val.' ';    
}    
echo'
';    
$results=$this->findbysql('select * from '.$table);    
foreach($results as $result)    
{    
echo'';    
foreach($result as $key=>$val)    
echo''.$val.' ';    
echo'
';    
}    
echo'
';    
echo'';    
echo'';    
    }
function toexcel($table,$mapping,$filename)    
    {    
header(content-type:application/vnd.ms-excel);    
header(content-disposition:filename=.$filename..xls);    
echo'xmlns:x=urn:schemas-microsoft-com:office:excel  
xmlns=[url=http://www.w3.org/tr/rec-html40][/url]>
';
echo'';    
echo'';    
if(is_array($mapping))    
{    
foreach($mapping as $key=>$val)    
echo''.$val.' ';    
}    
echo'
';    
$results=$this->findbysql('select * from '.$table);    
foreach($results as $result)    
{    
echo'';    
foreach($result as $key=>$val)    
echo''.$val.' ';    
echo'
';    
}    
echo'
';    
echo'';    
echo'';    
    }
function backup($table)    
    {    
if(is_array ($table))    
{    
$str=;    
foreach($table as $tab)    
$str.=$this->get_table_content($tab);    
return $str;    
}else{    
return $this->get_table_content($table);    
}    
    }
function backuptofile($table,$file)    
    {    
header(content-disposition: filename=$file.sql);//所保存的文件名    
header(content-type: application/octetstream);    
header(pragma: no-cache);    
header(expires: 0);    
if(is_array ($table))    
{    
$str=;    
foreach($table as $tab)    
$str.=$this->get_table_content($tab);    
echo $str;    
}else{    
echo $this->get_table_content($table);    
}    
    }
function restore($table,$file=,$content=)    
    {    
//排除file,香港服务器,香港服务器,content都为空或者都不为空的情况    
if(($file==&&$content==)||($file!=&&$content!=))    
echo参数错误;    
$this->truncate($table);    
if($file!=)    
{    
if($this->restorefromfile($file))    
return true;    
else  
return false;    
}    
if($content!=)    
{    
if($this->restorefromcontent($content))    
return true;    
else  
return false;    
}    
    }
//清空表,香港空间,以便恢复数据    
    function truncate($table)    
    {    
if(is_array ($table))    
{    
$str=;    
foreach($table as $tab)    
$this->execute(truncate table $tab);    
}else{    
$this->execute(truncate table $table);    
}    
    }
function get_table_content($table)    
    {    
$results=$this->findbysql(select * from $table);    
$temp = ;    
$crlf=
;    
foreach($results as $result)    
{
/*(;   
foreach($result as $key=>$val)   
{   
$schema_insert .=  `.$key.`,;   
}   
$schema_insert = ereg_replace(,$, , $schema_insert);   
$schema_insert .= )    
*/  
$schema_insert = insert into  $table values (;    
foreach($result as $key=>$val)    
{    
if($val != )    
$schema_insert .=  '.addslashes($val).',;    
else  
$schema_insert .= null,;    
}    
$schema_insert = ereg_replace(,$, , $schema_insert);    
$schema_insert .= );$crlf;    
$temp = $temp.$schema_insert ;    
}    
return $temp;    
    }
function restorefromfile($file){    
if (false !== ($fp = fopen($file, 'r'))) {    
$sql_queries = trim(fread($fp, filesize($file)));    
$this->splitmysqlfile($pieces, $sql_queries);    
foreach ($pieces as $query) {    
if(!$this->execute(trim($query)))    
return false;    
}    
return true;    
}    
return false;    
    }
function restorefromcontent($content)    
    {    
$content = trim($content);    
$this->splitmysqlfile($pieces, $content);    
foreach ($pieces as $query) {    
if(!$this->execute(trim($query)))    
return false;    
}    
return true;    
    }
function splitmysqlfile(&$ret, $sql)    
    {    
$sql= trim($sql);    
$sql=split(';',$sql);    
$arr=array();    
foreach($sql as $sq)    
{    
if($sq!=);    
$arr[]=$sq;    
}    
$ret=$arr;    
return true;    
    }    
}
$db=new db();
// 生成 word
//$map=array('no','name','email','age');    
//echo  $db->toword('test',$map,'档案');
// 生成 excel
//$map=array('no','name','email','age');    
//echo  $db->toexcel('test',$map,'档案');
// 生成 xml
//echo  $db->toextxml('test',0,20);
// 生成 json
//echo  $db->toextjson('test',0,20);
//备份
//echo $db->backuptofile('test','backup');    
?>
整表备份
复制代码 代码如下:
   
 
   