1

mssql_query();で長いテキストを保存しています。

そして、「テキスト」と呼ばれるデータ型のフィールドを使用します。

str_repeat()を使用してさまざまな長い文字列を試してみましたが、ページに時間がかかりますが、最終的に結果が送信されます。ただし、結果を取得すると、4096バイトしか取得されません。Management Studioでも値を取得しようとしましたが、同じ結果が得られました。

私には、保存の問題のように見えます。何かアドバイスしてください...私は混乱しています。

尋ねた人のために編集してください、これは私が使っているものです:

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']);
4

1 に答える 1

2

MicrosoftのPHPドライバー(参照用):http ://www.microsoft.com/en-us/download/details.aspx?id = 20098

しかし、ドライバーを変更したくない(または変更できない)場合は、このサイトから:

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ドライバーがテキストを切り捨てています。データ型やドライバなどを変更できない場合は、これで問題が解決するはずです。

于 2012-06-05T20:08:11.303 に答える