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

 更新时间:2014年12月25日 14:20:06   投稿:shichen2014   我要评论
这篇文章主要介绍了php中实现xml与mysql数据相互转换的方法,实例封装了一个类文件,可实现XML与MySQL数据的相互转换,具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

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

复制代码 代码如下:
<?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 .= "tt<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;
        }
}
?>

调用方法,代码如下:
复制代码 代码如下:
<?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程序设计有所帮助。

相关文章

  • thinkphp 验证码 的使用小结

    thinkphp 验证码 的使用小结

    thinkPHP中Verify类可以支持验证码的生成和验证功能,本文就给大家简单讲解下verify类生成验证码以及验证功能的实现方法,希望大家能够喜欢。
    2017-05-05
  • PHP在linux上执行外部命令的方法

    PHP在linux上执行外部命令的方法

    下面小编就为大家带来一篇PHP在linux上执行外部命令的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 非常不错的MySQL优化的8条经验

    非常不错的MySQL优化的8条经验

    php开发中,一定要考虑mysql的执行效率,下面的文章,可以很好的尽量避免的一些问题,学习php人要掌握这也是高手与菜鸟的区别,不是能做出来就叫高手的
    2008-03-03
  • 深入密码加salt原理的分析

    深入密码加salt原理的分析

    本篇文章是对密码加salt原理进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP页面跳转操作实例分析(header方法)

    PHP页面跳转操作实例分析(header方法)

    这篇文章主要介绍了PHP页面跳转操作,结合实例形式对比分析了HTML跳转与php使用header方法跳转的相关操作技巧与注意事项,并给出了一个跳转的封装函数供大家参考,需要的朋友可以参考下
    2016-09-09
  • php检测url是否存在的方法

    php检测url是否存在的方法

    这篇文章主要介绍了php检测url是否存在的方法,涉及php中get_headers及正则匹配的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • php将日期格式转换成xx天前的格式

    php将日期格式转换成xx天前的格式

    这篇文章主要介绍了php将日期格式转换成xx天前的格式,涉及php时间操作及正则匹配的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 一个简单的php路由类

    一个简单的php路由类

    这篇文章主要为大家详细介绍了一个简单的php路由类,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 深入研究PHP中的preg_replace和代码执行

    深入研究PHP中的preg_replace和代码执行

    这篇文章主要给大家介绍了关于PHP中preg_replace和代码执行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • smarty 原来也不过如此~~呵呵

    smarty 原来也不过如此~~呵呵

    smarty 原来也不过如此~~呵呵...
    2006-11-11

最新评论