我正在使用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']);
答案 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驱动程序正在截断文本。如果您无法更改数据类型,驱动程序等,则应该为您解决问题。