zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

php中实现xml与mysql数据相互转换的方法

2023-06-13 09:15:37 时间

本文实例讲述了php中实现xml与mysql数据相互转换的方法。分享给大家供大家参考。具体分析如下:

这里提供了一个mysql2xml转换类,可以快速的把xml转换成mysql同时反之也可以把mysql转换成xml,下面看代码.

mysql2xml.php类文件,用于备份MySQL数据的,代码如下:

复制代码代码如下:
<?php
classMySQL2XML{
       protected$conn;
       protected$result;
       protected$tables;
       protected$saveFolder="datas/";
        
       publicfunction__construct($config=NULL){
               if($config!==NULL&&is_array($config)){
                       $this->connect($config);
               }
       }
        
       publicfunctionconnect($config){
               $this->conn=mysql_connect($config["host"],$config["username"],$config["password"]);
               if($this->conn){
                       mysql_select_db($config["database"]);
                       returntrue;
               }
               returnfalse;
       }
        
       publicfunctionsetSaveFolder($folder){
               if(is_dir($folder)){
                       $this->saveFolder=rtrim(str_replace("\","/",$folder),"/");
                       returntrue;
               }
               returnfalse;
       }
        
       publicfunctionsetTables($tables){
               if(is_array($tables)){
                       $this->tables=$tables;
                       returntrue;
               }
               returnfalse;
       }
        
       publicfunctionquery($query){
               if(!isset($query)||trim($query)=="")returnfalse;
               $this->result=mysql_query($query);
               if($this->result)returntrue;
               returnfalse;
       }
        
       publicfunctiontoXML(){
               if(!isset($this->tables))returnfalse;
               foreach($this->tablesas$table){
                       $file=$this->saveFolder.$table.".xml";
                       $fp=@fopen($file,"w");
                       if(!$fp)exit("Cannotwritefile");
                       fwrite($fp,$this->tableToXML($table));
                       fclose($fp);
                       unset($fp);
               }
               returntrue;
       }
        
       publicfunctiontableToXML($table){
               header("content-type:text/xml;charset=utf-8");
               $xml="<?xmlversion="1.0"encoding="utf-8"?>n<datas>n";
               $fields=$this->getFields($table);
               $datas=$this->getDatas($table);
               $cdata=array();
               foreach($datasas$data){
                       foreach($dataas$key=>$value)
                               $cdata[$key][]=$value;
               }
               foreach($fieldsas$element){
                       $xml.="t<fieldsname="{$element["Field"]}"type="{$element["Type"]}"null="{$element["Null"]}"key="{$element["Key"]}"default="{$element["Default"]}"extra="{$element["Extra"]}">n";
                       foreach($cdata[$element["Field"]]as$value){
                               $xml.="tt<data>{$value}</data>n";
                       }
                       $xml.="t</fields>n";
               }
               $xml.="</datas>";
               return$xml;
       }
        
       protectedfunctiongetFields($table){
               $query="SHOWFIELDSFROM{$table}";
               $this->query($query);
               return$this->fetchAll();
       }
        
       protectedfunctiongetDatas($table){
               $query="SELECT*FROM{$table}";
               $this->query($query);
               return$this->fetchAll();
       }
        
       protectedfunctionfetch(){
               if(is_resource($this->result)){
                       returnmysql_fetch_assoc($this->result);
               }
               returnfalse;
       }
        
       protectedfunctionfetchAll(){
               if(is_resource($this->result)){
                       $return=array();
                       $row=NULL;
                       while($row=mysql_fetch_assoc($this->result)){
                               $return[]=$row;
                       }
                       return$return;
               }
               returnfalse;
       }
}
?>

调用方法,代码如下:
复制代码代码如下:
<?php
$xml=newMySQL2XML(array("host"=>"localhost","username"=>"root","password"=>"","database"=>"mysql"));
$xml->setTables(array("wp_term_relationships","wp_terms"));//设置备份的表
$xml->setSaveFolder("datas/");//保存备份文件的文件夹
$xml->toXML();//备份开始
?>

希望本文所述对大家的php程序设计有所帮助。