欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php中實(shí)現(xiàn)xml與mysql數(shù)據(jù)相互轉(zhuǎn)換的方法

 更新時(shí)間:2014年12月25日 14:20:06   投稿:shichen2014  
這篇文章主要介紹了php中實(shí)現(xiàn)xml與mysql數(shù)據(jù)相互轉(zhuǎn)換的方法,實(shí)例封裝了一個(gè)類文件,可實(shí)現(xiàn)XML與MySQL數(shù)據(jù)的相互轉(zhuǎn)換,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php中實(shí)現(xiàn)xml與mysql數(shù)據(jù)相互轉(zhuǎn)換的方法。分享給大家供大家參考。具體分析如下:

這里提供了一個(gè)mysql2xml轉(zhuǎn)換類,可以快速的把xml轉(zhuǎn)換成mysql同時(shí)反之也可以把mysql轉(zhuǎn)換成xml,下面看代碼.

mysql2xml.php類文件,用于備份MySQL數(shù)據(jù)的,代碼如下:

復(fù)制代碼 代碼如下:
<?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;
        }
}
?>

調(diào)用方法,代碼如下:
復(fù)制代碼 代碼如下:
<?php
$xml = new MySQL2XML(array('host'=>'localhost', 'username'=>'root', 'password'=>'', 'database'=>'mysql'));
$xml->setTables(array('wp_term_relationships','wp_terms'));//設(shè)置備份的表
$xml->setSaveFolder('datas/');//保存?zhèn)浞菸募奈募A
$xml->toXML();//備份開(kāi)始
?>

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php中CI操作多個(gè)數(shù)據(jù)庫(kù)的代碼

    php中CI操作多個(gè)數(shù)據(jù)庫(kù)的代碼

    最近有個(gè)需求,做一個(gè)獨(dú)立后臺(tái)出來(lái),這個(gè)獨(dú)立后臺(tái)有單獨(dú)的庫(kù),單獨(dú)的url,單獨(dú)…。但是,這里邊只是一些基礎(chǔ)數(shù)據(jù),而使用者需要通過(guò)該庫(kù)查看另一個(gè)庫(kù)里的統(tǒng)計(jì)數(shù)據(jù)。這就帶來(lái)一個(gè)問(wèn)題:我需要在控制器里邊可以同時(shí)操作兩個(gè)數(shù)據(jù)庫(kù),而且這兩個(gè)庫(kù)毫不相干
    2012-07-07
  • php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié)

    php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié)

    這篇文章主要介紹了php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié),本文同時(shí)介紹了mb_convert_encoding函數(shù),需要的朋友可以參考下
    2014-10-10
  • php創(chuàng)建類并調(diào)用的實(shí)例方法

    php創(chuàng)建類并調(diào)用的實(shí)例方法

    在本篇文章里小編給大家分享的是關(guān)于php如何創(chuàng)建類并調(diào)用的相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • 讓PHP COOKIE立即生效,不用刷新就可以使用

    讓PHP COOKIE立即生效,不用刷新就可以使用

    讓PHP COOKIE立即生效,不用刷新就可以使用,需要的朋友可以參考下。
    2011-03-03
  • 10 個(gè)經(jīng)典PHP函數(shù)

    10 個(gè)經(jīng)典PHP函數(shù)

    這篇文章主要介紹了php中的10個(gè)比較經(jīng)典的函數(shù),不太常見(jiàn),可以滿足有特殊需求的朋友
    2013-10-10
  • PHP 讀取和修改大文件的某行內(nèi)容的代碼

    PHP 讀取和修改大文件的某行內(nèi)容的代碼

    最近碰到一個(gè)比較有趣的問(wèn)題,就是修改某個(gè)文件的某一行字符,不過(guò)文件太大,file()直接讀取是不可能的,我使用fgets來(lái)跳轉(zhuǎn)到指定行,并用fwrite修改某個(gè)字符串。
    2009-10-10
  • PHP+Mysql+jQuery實(shí)現(xiàn)動(dòng)態(tài)展示信息

    PHP+Mysql+jQuery實(shí)現(xiàn)動(dòng)態(tài)展示信息

    在本文中,我將介紹如何在頁(yè)面上實(shí)現(xiàn)動(dòng)態(tài)展示用戶發(fā)表的信息,將用戶發(fā)表的信息逐條播放展示。該效果可以在展示系統(tǒng)動(dòng)態(tài)、商品評(píng)論等場(chǎng)景應(yīng)用
    2011-10-10
  • php socket通信(tcp/udp)實(shí)例分析

    php socket通信(tcp/udp)實(shí)例分析

    這篇文章主要介紹了php socket通信(tcp/udp)方法,結(jié)合實(shí)例形式分析了基于socket實(shí)現(xiàn)tcp與udp通信的相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • PHP生成網(wǎng)站桌面快捷方式代碼分享

    PHP生成網(wǎng)站桌面快捷方式代碼分享

    這篇文章主要介紹了PHP生成網(wǎng)站桌面快捷方式代碼分享,代碼很簡(jiǎn)單,復(fù)制改一下域名即可使用,需要的朋友可以參考下
    2014-10-10
  • PHP在終端中實(shí)現(xiàn)進(jìn)度條來(lái)處理數(shù)據(jù)的示例詳解

    PHP在終端中實(shí)現(xiàn)進(jìn)度條來(lái)處理數(shù)據(jù)的示例詳解

    在PHP中,有時(shí)候你需要在終端中處理大量數(shù)據(jù)或執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),同時(shí)希望能夠?qū)崟r(shí)跟蹤任務(wù)的進(jìn)度,在 PHP 中,有時(shí)候你需要在終端中處理大量數(shù)據(jù)或執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),同時(shí)希望能夠?qū)崟r(shí)跟蹤任務(wù)的進(jìn)度,需要的朋友可以參考下
    2023-10-10

最新評(píng)論