科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用DB2 9原生XML和PHP来简化XML应用程序

利用DB2 9原生XML和PHP来简化XML应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文讲述了模式演化对应用程序的影响,并通过使用情景向用户说明设置 PHP 环境的容易程度;将DB2原生XML 功能与PHP应用程序(包括用PHP和 XQuery编写的Web服务)集成的容易程度。

作者:Hardeep Singh 来源:IT专家网 2008年6月5日

关键字: IBM 数据库 DB2

  • 评论
  • 分享微博
  • 分享邮件
非 XML RDBMS
虽然可以在关系情况下创建存储过程,但对于这种情况可能会复杂得多。
  1. 从产品表获取产品详细信息:

    $stmt = db2_prepare($conn, "SELECT P.Name, P.Details, P.Price,
    P.Size, I.Location, I.Alias FROM
    sqlproduct P, sqlimages I WHERE P.Pid = ? AND
    P.Pid = I.Pid AND I.Type = ? FETCH FIRST
    ROW ONLY");
    db2_execute($stmt, array($pid, full'));
    list($prodName, $prodDetails, $prodPrice, $prodSize, $prodImgThumb,
    $prodImgAlias) = db2_fetch_array($stmt);

  2. 现在通过在数据周围放置 HTML 标记创建显示:





     

    通过使用 构造,可以在这里混合 PHP 和 HTML 代码:


    Details:
    Price: $
    Size:
    Click here to Buy



  3. 查询与此产品关联的图像并将其 URL 添加到输出 Web 页中:

    $stmt = db2_prepare($conn, "SELECT DISTINCT(Location)
    FROM sqlimages WHERE Pid = ?
    AND Type = ? AND NOT Location = ?");
    db2_execute($stmt, array($pid, full', $prodImgThumb));
    while(list($prodImg) = db2_fetch_array($stmt)) {
    ?>


     

    }
    ?>


因为产品数据已经分割到两个表中,且 PHP 和 HTML 代码已经混合,我们需要进行两个单独查询来获取产品详细信息和图像位置。

购物车

购物车是任何在线商店不可缺少的一部分。因此,它是一个适合创建为 Web 服务的实用程序。可定制此 Web 服务来计算价格、税款、币种换算、运输成本等等。在我们的实现示例中,已经使用 PHP 和 XQuery 创建了 Web 服务,可以进行价格和税款计算。

客户添加到购物车中的货品保存为客户端 cookie。此 cookie 在 PHP 中以关联数组形式读入并指定给变量 $cart。


图 8. 购物车
购物车


DB2 Viper
Web 服务提供商和查询

  1. 同样,我们已经使用 XQuery 将输出版面和业务逻辑嵌入到一个查询中。除了购物车信息,Web 服务还接受销售税率参数,购物车信息为一个包含产品 ID 及各自数量的 XML 文档。这使我们可以将购物车信息作为 XML 值传递到 XQuery 中。


    function getCart($cart, $taxrate) {
    global $conn;
    $result = "";
    $xquery =
    for $dummy in (1)

  2. 在 XQuery 中,与其他任何原生 XML 文档一样,变量 $cart 可以进行迭代:


    let $items := for $i in $cart/items/item
    let $product := db2-fn:xmlcolumn("XMLPRODUCT.DESCRIPTION")
    /product[@pid =
    $i/@pid]/description
    let $name := $product/name/text()
    let $price := $product/price/text()
    let $itemPrice := if($price = 0 or empty($price)) then ("$0.00")
    else (concat("$", $price))
    return
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章