2013-11-25 42 views
1

以下查询在Microsoft SQL Server Management Studio中执行时工作正常,但是当我通过php运行查询时,我得不到任何输出(没有通过mssql_query()获取呈现)。在PHP中不工作的MSSQL XML路径()查询

如果我从SQL查询中删除for xml path('')并再次在php中运行,现在所有通过mssql_query()的东西都会被呈现)。

有没有人知道XML路径('')和PHP的任何问题,或者我是否做错了什么。

SELECT DISTINCT x1.AcademicYearID, x1.RefNo, x1.Source, x1.Surname, x1.FirstForename, x1.Heard,convert(VARCHAR, x1.Date, 121) as Date, Notes, School, 
(SELECT DISTINCT x2.Subject + ', ' as 'data()' from [db].[dbo].[vCC_Mkt_Enquiries] x2 WHERE x1.RefNo = x2.RefNo AND x1.Source = x2.Source for xml path('')) as Subject 
FROM [db].[dbo].[vCC_Mkt_Enquiries] x1 
WHERE x1.AcademicYearID = '13/14' 

PHP

$sql = "SELECT DISTINCT x1.AcademicYearID, x1.RefNo, x1.Source, x1.Surname, x1.FirstForename, x1.Heard,convert(VARCHAR, x1.Date, 121) as Date, Notes, School, 
(SELECT DISTINCT x2.Subject + ', ' as 'data()' from [db].[dbo].[vCC_Mkt_Enquiries] x2 WHERE x1.RefNo = x2.RefNo AND x1.Source = x2.Source for xml path('')) as Subject 
FROM [db].[dbo].[vCC_Mkt_Enquiries] x1 
WHERE x1.AcademicYearID = '$year'"; 

$internal_events = mssql_query($sql, $connection) or die ("Error in query: $sql. ".mssql_error()); 

请注意:以下或死亡的错误永远不会被渲染。

or die ("Error in query: $sql. ".mssql_error()); 

回答

0

您必须将返回的xml类型重新输入到例如为nvarchar。就像这样:

DECLARE @XML XML 

SET @XML = (

SELECT something 
FROM sometable 
FOR XML PATH('items') 

) 

SELECT CONVERT(NVARCHAR(MAX), @XML)