一个用于MySQL的PHP XML类

我承认我不是PHP的领导者。然而,在看了一些PHP的信息之后,我认为有一些功能需要添加到其中来处理数据库连接和整合XML。要做到这一点,我想我可以创建一个处理连接MySQL和使用PHP中的domxml功能来提供XML输出的类。然后我就可以在PHP脚本的任何地方声明这个类并且在需要使用它的时候可以提供XML功能。

我假设人们使用PHP是原因是他的标价:免费。MySQL为需要向系统中增加数据库功能的开发人员提供一个免费的数据库解决方案。这些解决方案的缺点是在设置和管理的时候有些复杂。

我在这篇文章中使用的PHP版本是PHP 4.3.4 for Win32,可以从The PHP Group下载。MySQL的版本是MySQL 4.0.16 for Win32,可以从MySQL.com得到。MySQL的安装很容易——只要简单地按照其指令来就可以了。PHP稍微有一点复杂。

在PHP的下载页面有两个文件:一个ZIP文件和一个安装文件。因为我们需要添加ZIP文件中的扩展,所以这两个文件都要下载。下面是下载之后的所要做的一个简单步骤:

1. 使用安装文件安装PHP。

2. 解压iconv.dll,将其放到Windows的系统文件夹中。

3. PHP安装目录下创建一个目录(默认为C:\PHP)“extensions”。

4. 解压php_domxml.dll文件到这个目录。

5.  在Windows文件夹下找到php.ini文件,然后使用记事本或其它文本编辑器打开。在这个文件中找到“extensions_dir=”,然后将其值修改为第3步设置的扩展文件夹的完整路径。

6. 找到“;extension=php_domxml.dll”,删除本行开头的分号。

7.重新启动Web服务器。

然后在你的Web目录下使用下面的代码创建一个PHP页面“test.php”。(这段代码在运行IIS 5.0的Windows 2000 SP3能够正常运行。)

<?php

$myxml = new CMySqlXML("localhost", "test_user", "password", "test");

echo $myxml->run_sql_return_xml("SELECT * FROM users");

classCMySqlXML {

var $host;

var $user;

var $password;

var $db;

functionCMySqlXML($host, $user, $password, $db) {

$this->host = $host;

$this->user = $user;

$this->password = $password;

$this->db = $db;

}

functionrun_sql_return_xml($sql_string) {

$connection = mysql_connect($this->host, $this->user, $this->password,

$this->db);

mysql_select_db($this->db);

$result = mysql_query($sql_string);

$doc = domxml_open_mem("<root/>");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

$num_fields = mysql_num_fields($result);

$row_element = $doc->create_element(mysql_field_table($result, 0));

$doc_root = $doc->document_element();

$row_element = $doc_root->append_child($row_element);

for ($i = 0; $i < $num_fields; $i++) {

$field_name = mysql_field_name($result, $i);

$col_element = $doc->create_element($field_name);

$col_element = $row_element->append_child($col_element);

$text_node = $doc->create_text_node($row[$field_name]);

$col_element->append_child($text_node);

}

}

mysql_free_result($result);

mysql_close($connection);

return $doc->dump_mem(false);

}

}
这个例子要求你在MySQL上有一个数据库“test”,其中有一个表“users”。而且,你还需要为访问测试数据库上的数据创建一个用户。创建数据库、表等的步骤可以查看MySQL的文档。

如果你分析一下代码,你就会明白我创建了一个叫做CMySqlXML的类。CMySqlXML构造函数接受四个参数:MySQL的主机名,一个合法的用户名,一个密码和一个数据库名字。构造函数使用这四个参数设置类的host、user、password和db成员变量。

该类提供的唯一的一个方法是run_sql_return_xml()。它接受一个SQL查询字符串参数。当这个方法执行的时候,它创建一个到MySQL数据库的连接并选择数据库。查询字符串被执行,结果存储到变量$result中。使用domxml_open_mem()函数创建一个新的DOMDocument对象。然后,代码开始循环结果集中的所有记录。对于每一条记录,添加一个与结果集的表同名的行元素到DOMDocument文档元素中。然后为每个字段添加一个元素到行元素中,元素名为字段名。最后,一个文本节点被添加到每个字段节点,节点的值为该字段的值。

在循环所有行之后,代码释放结果集并关闭连接。产生的DOMDocument XML从函数中返回。

在PHP页面的开始处你会看到CMySqlXML对象被实例化,run_sql_return_xml()方法被调用。这个方法的返回值被返回给客户。domxml功能除了PHP函数命名约定之外都遵守DOM规范。

如果需要更多有关DOM规范的信息,可以访问W3C的站点。而更多domxml的信息则可以从The PHP Group找到,在这里你可以下载不同格式的文档。

--------------------------------------------------------------------------------
本文作者: Phillip Perkins是Ajilon Consulting的签约人。他的经验很丰富,从机器控制和客户/服务器到企业内部网应用。

(0)

相关推荐

  • php中Array2xml类实现数组转化成XML实例

    本文实例讲述了php中Array2xml类实现数组转化成XML的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php class Array2xml {     var $xml;     function array2xml($array,$encoding='utf-8') {         $this->xml='<?xml version="1.0" encoding="'.$encoding.'"?>'

  • PHP使用xmllint命令处理xml与html的方法

    本文实例讲述了PHP使用xmllint命令处理xml与html的方法.分享给大家供大家参考.具体分析如下: xmllint是一个很方便的处理及验证xml.处理html的工具,linux下只要安装libxml2就可以使用这个命令.首先看下其结合--html .--xpath参数处理html时的例子: 示例如下: 复制代码 代码如下: curl http://www.jb51.net /ip/?q=8.8.8.8 2>/dev/null | xmllint --html --xpath "//

  • php与XML、XSLT、Mysql的结合运用实现代码

    使用php中的xml与xslt要用到一些dll库, extension=php_domxml.dll //操作XML的函数库 extension=php_iconv.dll //转码用的,比如将GB2312的转成UTF-8的 extension=php_xslt.dll //XSLT的函数库 使用上面这三个库的时候,你要将php安装目录下的dlls目录加入到路径中,否则会找不到 这些类库的 在下面的课程中,我们会用到php中的PEAR类库,主要用了DB类库,Sql2XML类库,大家可以在 pea

  • php实现mysql事务处理的方法

    本文实例讲述了php实现mysql事务处理的方法.分享给大家供大家参考.具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚操作是大项目经常用到的,像银行,电子商务等都会用到,有需要的朋友可以参考一下. 近期项目软件升级到支持事务处理,做个示例供大家学习参考. 环境 mysql 5.2 /php 5 支持事务的table 类型 需要InnoDB php mysql 事务处理实现程

  • PHP 读取和编写 XML

    什么是 XML? XML 是一种数据存储格式.它没有定义保存什么数据,也没有定义数据的格式.XML 只是定义了标记和这些标记的属性.格式良好的 XML 标记看起来像这样: 复制代码 代码如下: <name>Jack Herrington</name> DOM读取 XML 复制代码 代码如下: <?php   $doc = new DOMDocument();   $doc->load( 'books.xml' );     $books = $doc->getEl

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

    本文实例讲述了php中实现xml与mysql数据相互转换的方法.分享给大家供大家参考.具体分析如下: 这里提供了一个mysql2xml转换类,可以快速的把xml转换成mysql同时反之也可以把mysql转换成xml,下面看代码. mysql2xml.php类文件,用于备份MySQL数据的,代码如下: 复制代码 代码如下: <?php class MySQL2XML {         protected $conn;         protected $result;         prot

  • 用PHP实现XML备份Mysql数据库

    以下是在Linux下通过Apache+PHP对Mysql数据库的备份的文件代码: 文件一.Listtable.php (文件列出数据库中的所有表格,供选择备份) 请选择要备份的表格: <? $con=mysql_connect('localhost','root','xswlily'); $lists=mysql_list_tables("embed",$con); //数据库连接代码 $i=0; while($i$tb_name=mysql_tablename($lists,$

  • php将csv文件导入到mysql数据库的方法

    本文实例讲述了php将csv文件导入到mysql数据库的方法.分享给大家供大家参考.具体分析如下: 本程序实现数据导入原理是先把csv文件上传到服务器,然后再通过php的fopen与fgetcsv文件把数据保存到数组,然后再用while把数据一条条插入到mysql数据库,代码如下: 复制代码 代码如下: <?php $fname = $_files['myfile']['name']; $do = copy($_files['myfile']['tmp_name'],$fname); if ($

  • PHP XML备份Mysql数据库

    用PHP实现XML备份Mysql数据库 收藏 以下是在Linux下通过Apache+PHP对Mysql数据库的备份的文件代码: 文件一.Listtable.php (文件列出数据库中的所有表格,供选择备份) 请选择要备份的表格: 复制代码 代码如下: <? $con=mysql_connect('localhost','root','xswlily'); $lists=mysql_list_tables("embed",$con); //数据库连接代码 $i=0; while($

  • PHP中SimpleXML函数用法分析

    本文实例讲述了关于php中SimpleXML 函数的用法,此函数是允许您把 XML 转换为对象,分享给大家供大家参考.具体分析如下: SimpleXML 函数允许您把 XML 转换为对象,通过普通的属性选择器或数组迭代器,可以处理这个对象,就像处理任何其他对象一样.其中的一些函数需要最新的 PHP 版本. 安装:SimpleXML 函数是 PHP 核心的组成部分,无需安装即可使用这些函数,代码如下: 复制代码 代码如下: <?php  //以对象形式返回所有内容  $lib = simplexm

随机推荐