从 PHP 脚本接收 SQL Server 查询中的截断字符串值


Receiving a truncated string value in a SQL Server query from PHP script

我正在PHP脚本中执行SQL查询。查询使用 PDO 类针对 SQL Server 数据库执行。我正在使用$result->fetch(PDO::FETCH_ASSOC)检索查询结果。

结果中的一列是一个可能超过 256 个字符的字符串,但是当我在 PHP 中访问此值时,字符串总是在 256 个字符处被截断。该值本身基本上只是一个句子,即其长度超过 256 个字符,但不是 1024 个字符。

MS SQL DB 将数据(有效地)存储在VARCHAR(1024)列中。如果我在 Visual Studio 中运行查询,则不会截断 - 我返回完整的字符串。

我显然可以修改查询和PHP代码(不是配置),但不能修改MS SQL DB。

截断在哪里发生?如何在 PHP 代码中检索完整字符串?

我尝试了一些方法,并找到了一些有效的方法。

在 MS SQL 查询中,我将有问题的字段包装在CAST(x as TEXT)中。这似乎已经成功了。

作为我尝试过的其他一些事情的记录:

此页面上的评论引用了检索大字符串。http://php.net/manual/en/function.mssql-query.php

建议将这些行作为 PHP 脚本的一部分执行:

$conn->query('SET TEXTSIZE 2147483647');
ini_set ( 'mssql.textlimit' , '2147483647' );
ini_set ( 'mssql.textsize' , '2147483647' );

有些人似乎说查询本身有效;其他人则说php ini行可以解决问题。