用于MySQL的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能够 正常运行。)

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("");
    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找到,在这里你可以下载不同格式的文档。

时间: 2024-12-27 23:47:15

用于MySQL的PHP XML类的相关文章

一个用于MySQL的PHP XML类

mysql|xml 我承认我不是PHP的领导者.然而,在看了一些PHP的信息之后,我认为有一些功能需要添加到其中来处理数据库连接和整合XML.要做到这一点,我想我可以创建一个处理连接MySQL和使用PHP中的domxml功能来提供XML输出的类.然后我就可以在PHP脚本的任何地方声明这个类并且在需要使用它的时候可以提供XML功能. 我假设人们使用PHP是原因是他的标价:免费.MySQL为需要向系统中增加数据库功能的开发人员提供一个免费的数据库解决方案.这些解决方案的缺点是在设置和管理的时候有些复

一个用于MySQL的PHP XML类_php基础

我承认我不是PHP的领导者.然而,在看了一些PHP的信息之后,我认为有一些功能需要添加到其中来处理数据库连接和整合XML.要做到这一点,我想我可以创建一个处理连接MySQL和使用PHP中的domxml功能来提供XML输出的类.然后我就可以在PHP脚本的任何地方声明这个类并且在需要使用它的时候可以提供XML功能.  我假设人们使用PHP是原因是他的标价:免费.MySQL为需要向系统中增加数据库功能的开发人员提供一个免费的数据库解决方案.这些解决方案的缺点是在设置和管理的时候有些复杂. 我在这篇文章

mysql 数据库连查询类

mysql 数据库连查询类 class mysqlquery {  var $sql;//sql语句执行结果  var $query;//sql语句  var $num;//返回记录数  var $r;//返回数组  var $id;//返回数据库id号  //执行mysql_query()语句  function query($query)  {   $this->sql=mysql_query($query) or die(mysql_error ()."<br>"

php 生成符合google 地图标准xml类sitemap代码

php教程生成符合google 地图标准xml类sitemap代码  mysql教程_connect("localhost","root","root") or die('Database Server Uid or Password Error!');  mysql_select_db('ip') or die('data !');  mysql_query("SET NAMES 'gb2312'");  */  inclu

Win32下两种用于C++的线程同步类(上)

线程同步是多线程程序设计的核心内容,它的目的是正确处理多线程并发时的各种问题,例如线程的等待.多个线程访问同一数据时的互斥,防死锁等.Win32提供多种内核对象和手段用于线程同步,如互斥量.信号量.事件.临界区等.所不同的是,互斥量.信号量.事件都是Windows的内核对象,当程序对这些对象进行控制时会自动转换到核心态,而临界区本身不是内核对象,它是工作在用户态的.我们知道从用户态转换到核心态是需要以时间为代价的,所以如果能在用户态就简单解决的问题,就可以不必劳烦核心态了. 这里我要说的是两种用

php 操作xml类

Xml.class.php代码   <?php   /*****************************************    * *    * 文件名: xml.php                                 * 作  用: xml类,完善中,暂只支持三级节点                       * *    * 作  者: loking(biyees)                               * Email:  biyees

xml-通过定义一个子类在XML类中自定义视图

问题描述 通过定义一个子类在XML类中自定义视图 以下是我自定义的类 <view class=""com.productions.sample.TextCustom""// more.../> 子类 public class TextCustom extends TextView { // Stuff. } 我想实现的是 public final class Custom { public class TextCustom extends TextVie

java连接Mysql数据库的工具类_java

一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExceptio

mysqldump常用于MySQL数据库逻辑备份

  mysqldump常用于MySQL数据库逻辑备份.   1.各种用法说明      A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file]      上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump      生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句.