0

ストアド プロシージャを実行し、PHP を介して表示する XML データ型を返そうとしています。

これが私が持っているものです-次のような単純なストアドプロシージャ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出力とはまったく異なります。

ストアド プロシージャから PHP に XML 出力を取得するにはどうすればよいですか?

私は試しました: sqlsrv_get_field と SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR)) を試しましたが、それらを間違って使用していたに違いなく、動作させることができません。

どうもありがとう!

4

1 に答える 1

0
DECLARE @XML XML

SET @XML = (

SELECT something 
FROM sometable
FOR XML PATH('items'), ROOT('root')

)

SELECT CONVERT(NVARCHAR(MAX), @XML)
于 2014-01-15T12:29:50.013 に答える