我正在使用FreeTDS
连接并使用Linux上的PHP 5.3.15中的SQL Server 2008数据库。我在此数据库中有一个列,其数据类型为VARCHAR(MAX)
。
不幸的是,当值超过8000个字符时,我无法通过mssql_bind()
设置列的值。该值存储在数据库中,但截断为8000个字符。我正在调用的存储过程已将输入变量设置为正确的数据类型(VARCHAR(MAX)
)。
这是我尝试过的:
mssql.textlimit
和mssql.textsize
都设置为允许的最大值(2147483647)。似乎无论我将它们设置为什么,它们实际上对我可以发送的文本的大小没有影响。也就是说,即使将这些值设置为100,也不会将文本截断为100个字符。mssql.textlimit
设置mssql.textsize
和ini_set()
。再次,这似乎没有任何影响。maxlen
的{{1}}属性设置为高于8000的数字。如上所述,即使将其设置为较低的数字似乎也没有任何影响。mssql_bind()
和/或将TEXT
的{{1}}属性更改为type
。此外,为了让事情更加混乱(至少对我来说),我 可以 通过以下方式获取整个字符串长度以存储在数据库中: / p>
mssql_bind()
的变量的值的长度硬编码为超过8000个字符。这成功地存储了整个字符串。SQLTEXT
。这成功地存储了整个字符串。所以这就是我相信我已经将其缩小到VARCHAR(MAX)
方法,将长度缩短为8000个字符。
这仅仅是PHP中"UPDATE my_table SET my_large_colmn = '{$text_longer_than_8000_chars}'"
和mssql_bind()
驱动程序的限制,还是我错过了什么?