【问题标题】:How to return an XML SQL data type from my stored procedure to PHP如何将 XML SQL 数据类型从我的存储过程返回到 PHP
【发布时间】:2013-11-01 13:32:51
【问题描述】:

我一直在尝试执行一个存储过程并返回一个 XML 数据类型以通过 PHP 显示。

这是我所拥有的——一个简单的存储过程,getXML 如下:

CREATE PROCEDURE [dbo].[getXML] 
AS

select --some fields
from --some table
for XML auto, elements

GO

当我通过 SQL Server Management Studio 执行该语句并输出 XML 结果集时,该语句运行良好。

如何让结果集显示在 php 页面上?

到目前为止,我可以在 PHP 中执行以下操作:

<?php

  $server = 'thisServer';
  // Connect to MSSQL
 $link = mssql_connect($server, 'user', 'pass');

  if (!$link) {

      die('Something went wrong while connecting to MSSQL');

  }


  // Create a new statement
  $stmt = mssql_init('dbo.getXML');


  // Execute the statement

  $result = mssql_execute($stmt);
  $count = mssql_num_rows($result);
  if($count == 0)
  {
    print "<p>No results</p>";
  }
  else
  {
    $row = mssql_fetch_assoc($result);
        foreach($row as $field => $value):
            $field
        endforeach;

    mssql_data_seek($result, 0);

    while($row = mssql_fetch_assoc($result))
    {
    foreach($row as $value):
        =$value
    endforeach;
    }

    mssql_free_statement($stmt);
?>

虽然我可以打印结果,但它看起来很糟糕……根本不像 XML 输出。

如何从我的存储过程中获取 XML 输出到 php 中?

我已经尝试过:sqlsrv_get_field 和 SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR)) 但我一定是错误地使用了它们并且无法让它工作。

非常感谢!

【问题讨论】:

    标签: php xml sql-server-2008 stored-procedures


    【解决方案1】:
    DECLARE @XML XML
    
    SET @XML = (
    
    SELECT something 
    FROM sometable
    FOR XML PATH('items'), ROOT('root')
    
    )
    
    SELECT CONVERT(NVARCHAR(MAX), @XML)
    

    【讨论】:

      猜你喜欢
      • 2016-11-03
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多