我正在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代码中检索完整的字符串?
答案 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系列就行了。