使用 DB2 pureXML 和 PHP 构建 Support Knowledge Base(上)
2010-02-25 00:00:00 来源:WEB开发网该类包含三个变量。$db 变量用于实例化与数据库的连接。每当类需要检索、保存或删除数据时,都将使用数据库连接。当 Category 类被创建时,$db 变量将作为一个新的 DB 对象得到调用。DB 类的方法随后可以通过下面的语法用于 Category 类:
$this->db->method_name()
您将在处理数据库的函数中使用该语法。例如:
$this->db->query($sql)
save 函数非常聪明,因为它可以同时处理新记录的创建和现有记录的更新。它将检查对象是否为 $id 属性设置了一个值。如果设置了的话,它将执行一条 UPDATE 语句,如果不是的话,它将使用 INSERT 语句来创建新记录。
SQL/XML 简介
如果您熟悉 SQL 并且开发由关系数据库驱动的应用程序,那么您可能已经注意到 Category 类中的 SQL 语句使用了不寻常的函数。这些函数是对 IBM DB2 中可用 SQL 标准的特殊扩展。这种扩展后的 SQL 被称为 SQL/XML。
SQL/XML 的第一处应用体现在 save 函数中。该函数使用 XMLPARSE 函数将传递给它的文本解析为 XML。这一点在本例中表现良好,因为您处理的 XML 数据都是非常基本的数据。然后,在创建 Article 类时,您会看到一个更为高级的 XML 解析需求。
SQL/XML 通过 XMLTABLE 函数在 getAllCategories、load 和 getCategoryNameById 中也得到了应用。让我们看看清单 5 的 getAllCategories 函数中的 SELECT 语句,进一步了解详情。考虑到可读性,所有 PHP 字符串格式都被从清单中移除。
清单 5. getAllCategories 函数中的 SELECT 语句
SELECT c.id, x.name
FROM category c, XMLTABLE('$d/category' PASSING c.data AS "d"
COLUMNS name VARCHAR(200) PATH 'name') AS x
ORDER BY x.name
更多精彩
赞助商链接