《PHP學習:php中實現xml與mysql數據相互轉換的方法》要點:
本文介紹了PHP學習:php中實現xml與mysql數據相互轉換的方法,希望對您有用。如果有疑問,可以聯系我們。
PHP編程本文實例講述了php中實現xml與mysql數據相互轉換的辦法.分享給大家供大家參考.具體分析如下:
PHP編程這里提供了一個mysql2xml轉換類,可以快速的把xml轉換成mysql同時反之也可以把mysql轉換成xml,下面看代碼.
PHP編程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編程希望本文所述對大家的php程序設計有所幫助.
《PHP學習:php中實現xml與mysql數據相互轉換的方法》是否對您有啟發,歡迎查看更多與《PHP學習:php中實現xml與mysql數據相互轉換的方法》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13185.html