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(); } //开源代码phpfensi测试数据 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中实现xml与mysql数据相互转换代码 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30445