首页 > php代码 > php mysql与xml数据相互转换程序

php mysql与xml数据相互转换程序

很多时间我们要把数据保存到其它地方,如保存到xml或又想把xml数据保存到mysql数据库,下面我们就提供了一款php mysql与xml数据相互转换程序哦。

先来看看调用方法


<?php
$xml = new MySQL2XML(array(
    'host' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'mysql'
));
$xml->setTables(array(
    'wp_term_relationships',
    'wp_terms'
)); //设置备份的表
$xml->setSaveFolder('datas/'); //保存备份文件的文件夹
$xml->toXML(); //备份开始


下面是这个互相转换程序的类型文件


<?php
class MySQL2XML {
    protected $conn;
    protected $result;
    protected $tables;
    protected $saveFolder = 'datas/';
    public function __construct($config = NULL) {
        if ($config !== NULL && is_array($config)) {
            $this->connect($config);
        }
    }
    public function connect($config) {
        $this->conn = mysql_connect($config['host'], $config['username'], $config['password']);
        if ($this->conn) {
            mysql_select_db($config['database']);
            return true;
        }
        return false;
    }
    public function setSaveFolder($folder) {
        if (is_dir($folder)) {
            $this->saveFolder = rtrim(str_replace("\\", "/", $folder) , '/');
            return true;
        }
        return false;
    }
    public function setTables($tables) {
        if (is_array($tables)) {
            $this->tables = $tables;
            return true;
        }
        return false;
    }
    public function query($query) {
        if (!isset($query) || trim($query) == '') return false;
        $this->result = mysql_query($query);
        if ($this->result) return true;
        return false;
    }
    public function toXML() {
        if (!isset($this->tables)) return false;
        foreach ($this->tables as $table) {
            $file = $this->saveFolder . $table . '.xml';
            $fp = @fopen($file, 'w');
            if (!$fp) exit('Can not write file');
            fwrite($fp, $this->tableToXML($table));
            fclose($fp);
            unset($fp);
        }
        return true;
    }
    public function tableToXML($table) {
        header("content-type:text/xml;charset=utf-8");
        $xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<datas>\n";
        $fields = $this->getFields($table);
        $datas = $this->getDatas($table);
        $cdata = array();
        foreach ($datas as $data) {
            foreach ($data as $key => $value) $cdata[$key][] = $value;
        }
        foreach ($fields as $element) {
            $xml.= "\t<fields name=\"{
                $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.= "\t\t<data>{$value}</data>\n";
            }
            $xml.= "\t</fields>\n";
        }
        $xml.= '</datas>';
        return $xml;
    }
    protected function getFields($table) {
        $query = "SHOW FIELDS FROM {$table}";
        $this->query($query);
        return $this->fetchAll();
    }
    protected function getDatas($table) {
        $query = "SELECT * FROM {$table}";
        $this->query($query);
        return $this->fetchAll();
    }
    protected function fetch() {
        if (is_resource($this->result)) {
            return mysql_fetch_assoc($this->result);
        }
        return false;
    }
    protected function fetchAll() {
        if (is_resource($this->result)) {
            $return = array();
            $row = NULL;
            while ($row = mysql_fetch_assoc($this->result)) {
                $return[] = $row;
            }
            return $return;
        }
        return false;
    }
}


本文地址:http://www.phprm.com/code/3df9ddc5ddb66cb5fe673e23cdf249fe.html

转载随意,但请附上文章地址:-)

标签:none

发表留言