当前位置:Gxlcms > PHP教程 > 利用PHP实现XML和MySQL的相互转换_PHP

利用PHP实现XML和MySQL的相互转换_PHP

时间:2021-07-01 10:21:17 帮助过:7人阅读

mysql2xml.php类文件:用于备份MySQL数据的!

PHP代码

  1. class MySQL2XML {
  2. protected $conn;
  3. protected $result;
  4. protected $tables;
  5. protected $saveFolder = 'datas/';
  6. public function __construct($config = NULL) {
  7. if($config !== NULL && is_array($config)) {
  8. $this->connect($config);
  9. }
  10. }
  11. public function connect($config) {
  12. $this->conn = mysql_connect($config['host'], $config['username'], $config['password']);
  13. if($this->conn) {
  14. mysql_select_db($config['database']);
  15. return true;
  16. }
  17. return false;
  18. }
  19. public function setSaveFolder($folder) {
  20. if(is_dir($folder)) {
  21. $this->saveFolder = rtrim(str_replace("\\", "/", $folder),'/');
  22. return true;
  23. }
  24. return false;
  25. }
  26. public function setTables($tables) {
  27. if(is_array($tables)) {
  28. $this->tables = $tables;
  29. return true;
  30. }
  31. return false;
  32. }
  33. public function query($query) {
  34. if(!isset($query) || trim($query) == '') return false;
  35. $this->result = mysql_query($query);
  36. if($this->result) return true;
  37. return false;
  38. }
  39. public function toXML() {
  40. if(!isset($this->tables)) return false;
  41. foreach($this->tables as $table) {
  42. $file = $this->saveFolder.$table.'.xml';
  43. $fp = @fopen($file, 'w');
  44. if(!$fp) exit('Can not write file');
  45. fwrite($fp, $this->tableToXML($table));
  46. fclose($fp);
  47. unset($fp);
  48. }
  49. return true;
  50. }
  51. public function tableToXML($table) {
  52. header("content-type:text/xml;charset=utf-8");
  53. $xml = ""1.0\" encoding=\"utf-8\" ?>\n\n";
  54. $fields = $this->getFields($table);
  55. $datas = $this->getDatas($table);
  56. $cdata = array();
  57. foreach($datas as $data) {
  58. foreach($data as $key => $value)
  59. $cdata[$key][] = $value;
  60. }
  61. foreach($fields as $element) {
  62. $xml .= "\t\n";
  63. foreach($cdata[$element['Field']] as $value) {
  64. $xml .= "\t\t{$value}\n";
  65. }
  66. $xml .= "\t\n";
  67. }
  68. $xml .= '';
  69. return $xml;
  70. }
  71. protected function getFields($table) {
  72. $query = "SHOW FIELDS FROM {$table}";
  73. $this->query($query);
  74. return $this->fetchAll();
  75. }
  76. protected function getDatas($table) {
  77. $query = "SELECT * FROM {$table}";
  78. $this->query($query);
  79. return $this->fetchAll();
  80. }
  81. protected function fetch() {
  82. if(is_resource($this->result)) {
  83. return mysql_fetch_assoc($this->result);
  84. }
  85. return false;
  86. }
  87. protected function fetchAll() {
  88. if(is_resource($this->result)) {
  89. $return = array();
  90. $row = NULL;
  91. while($row = mysql_fetch_assoc($this->result)) {
  92. $return[] = $row;
  93. }
  94. return $return;
  95. }
  96. return false;
  97. }
  98. }
  99. ?>

调用方法:

PHP代码

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

人气教程排行