Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在存储过程中使用XML时出错(PDO&x2B;MS SQL 2008)_Php_Xml_Sql Server 2008_Pdo - Fatal编程技术网

Php 在存储过程中使用XML时出错(PDO&x2B;MS SQL 2008)

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

当我使用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看起来像这样:

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