新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → [转帖]一个用于MySQL的PHP XML类 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9456 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]一个用于MySQL的PHP XML类 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 XML 与 数据库 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客楼主
    发贴心情 [转帖]一个用于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规范。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/1 2:09:00
     
     sun7bear88 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:54
      门派:XML.ORG.CN
      注册:2005/9/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sun7bear88发送一个短消息 把sun7bear88加入好友 查看sun7bear88的个人资料 搜索sun7bear88在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sun7bear88的博客2
    发贴心情 
    我用php4.4.0+apache+winxp下调试这个程序怎么报错呢?
    Fatal error: Call to undefined function: domxml_open_mem() in C:\Apache2\htdocs\test.php on line 19
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/20 15:18:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/16 16:38:52

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms