为什么TEXT列只返回4096个字节?

时间:2012-06-05 20:01:30

标签: php sql-server sql-server-2008

我正在使用mssql_query();

存储长文本

使用名为“text”的数据类型的字段。

我使用str_repeat()尝试使用不同的长字符串,页面需要很长时间,但最后会提交结果。 然而,当我检索结果时,我得到的只有4096字节。 我也试图通过管理工作室检索这个值,并得到相同的结果。

在我看来,这对我来说是一个存储问题。请建议......我很困惑。

编辑对于那些问过的人,这就是我正在使用的:

function sql_escape($sql) { 
        /* De MagicQuotes */ 
    $fix_str        = stripslashes($sql); 
    $fix_str    = str_replace("'","''",$sql); 
    $fix_str     = str_replace("\0","[NULL]",$fix_str); 
    return "'".$fix_str."'"; 
} 
$query=mssql_query('update prod_cat set htmlbottom='.sql_escape(str_repeat('\'choose_cat ', 122000)).
    ' where ID=1'   );  

$query=mssql_query('select htmlbottom from prod_cat where ID=1');
$a=mssql_fetch_assoc($query);
echo strlen($a['htmlbottom']);

1 个答案:

答案 0 :(得分:1)

Microsoft的PHP驱动程序(供参考):http://www.microsoft.com/en-us/download/details.aspx?id=20098

但如果您不想(或不能)更改驱动程序,请this site

You need to increase the maximum size of a text column to be returned from
SQL Server by PHP. You can do this with a simple SQL query:
    SET TEXTSIZE 2147483647

Which you can run with the following PHP (best run just after you make a
connection).
    mssql_query("SET TEXTSIZE 2147483647");

A better way to work around the issue is to change the "textlimit" and
"textsize" settings within php.ini, like so:
    mssql.textlimit = 2147483647
    mssql.textsize = 2147483647

您的MSSQL驱动程序正在截断文本。如果您无法更改数据类型,驱动程序等,则应该为您解决问题。