Php 在存储过程中使用XML时出错(PDO&x2B;MS SQL 2008)
当我使用SQL Profiler时,我看到所有来自Debian服务器的请求,我可以执行它们而不会出现任何错误。当我从Apache/PHP+PDO执行SP时,会出现以下错误: SQLSTATE[HY000]:一般错误:1934 常规SQL Server错误:检查 来自SQL Server的消息[1934] (严重性16)[(无效)] 事实上,错误没有正确显示。实际错误应如下所示: Msg 1934,16级,状态1,程序 计算符号,第38行选择 失败,因为以下集合 选项的设置不正确: “CONCAT_NULL_产生_NULL, ANSI_警告,ANSI_填充'。验证 设置的选项是正确的 具有索引视图和/或索引的 计算列和/或过滤列 索引和/或查询通知 和/或XML数据类型方法和/或 空间索引操作 我的SP看起来像这样:Php 在存储过程中使用XML时出错(PDO&x2B;MS SQL 2008),php,xml,sql-server-2008,pdo,Php,Xml,Sql Server 2008,Pdo,当我使用SQL Profiler时,我看到所有来自Debian服务器的请求,我可以执行它们而不会出现任何错误。当我从Apache/PHP+PDO执行SP时,会出现以下错误: SQLSTATE[HY000]:一般错误:1934 常规SQL Server错误:检查 来自SQL Server的消息[1934] (严重性16)[(无效)] 事实上,错误没有正确显示。实际错误应如下所示: Msg 1934,16级,状态1,程序 计算符号,第38行选择 失败,因为以下集合 选项的设置不正确: “CONCAT
CREATE PROCEDURE dbo.TEST_XML(
@MyXML XML
)
AS
BEGIN
SET @MyXML = '<SampleXML>
<Colors>
<Color1>White</Color1>
</Colors>
<Fruits>
<Fruits1>Apple</Fruits1>
</Fruits>
</SampleXML>'
SELECT
a.b.value('Colors[1]/Color1[1]','varchar(10)') AS Color1,
a.b.value('Fruits[1]/Fruits1[1]','varchar(10)') AS Fruits1,
FROM @MyXML.nodes('SampleXML') a(b)
END
我想知道是否可以更改PDO中的登录设置,使其看起来更像:
set quoted_identifier on
set arithabort on
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language Français
set dateformat dmy
set datefirst 1
set transaction isolation level read committed
我读过一篇文章,这是一种变通方法,但我想知道是否有真正的解决方案(比如配置PDO,我不知道如何使它工作)
set quoted_identifier on
set arithabort on
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language Français
set dateformat dmy
set datefirst 1
set transaction isolation level read committed