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

时间:2016-03-12 14:33:15

标签: php sql-server string pdo

我正在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代码中检索完整的字符串?

1 个答案:

答案 0 :(得分:1)

我尝试了一些东西,发现了一些有用的东西。

在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系列就行了。