著者: Wenlong Wu
1. MS SQL SERVER データベースの場合
次の 2 つの解決策があります:
実現するには php.ini を変更します: php.ini を開くと、2 つのオプションが表示されます: mssql.textsize と mssql.textlimit:
;有効範囲は 0 - 2147483647。デフォルト = 4096。
;mssql.textlimit = 4096
つまり、多くの場合、遭遇したものは 4K に切り詰められ、適切なサイズに変更し、先行するセミコロンを削除して保存し、WEB サーバーを再起動します。
上記の 2 つのオプションから、範囲は 0 ~ 2147483647 バイトであることがわかります。実際、-1 も許容されます。PHP ソース コードを確認すると、-1 は無制限を意味することがわかります。 textlimit) != - 1) {
sprintf(buffer, "%li", MS_SQL_G(textlimit));
if (DBSETOPT(mssql.link, DBTEXTLIMIT,buffer)==FAIL) {
efree(hashed_details); (mssql.login) ; U Return_false;
}}}
if (ms_sql_g (textSize)! = -1) {
Sprintf (buffer, "Set TextSize %li", ms_sql_g (TextSize)); 、buffer);
dbresults(mssql.link)
PHP でクエリの前に SET TEXTSIZE を実行する
mssql_query("SET TEXTSIZE 65536"); HP上から SET TEXTSIZE が実際に実行されることがソース コードで確認できます:)
2 番目に、Sybase データベースの場合
この拡張機能には php.ini で設定する SQL SERVER のようなオプションがないため、唯一の方法は上記の 2 番目のメソッド、つまり:
SELECT の前に実行
sybase_query("SET TEXTSIZE 65536");
上記は、SQL Server 2000 のダウンロードの内容を含め、PHP で SQL Server または Sybase にクエリを実行するときに TEXT フィールドが切り捨てられる問題の解決策を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。