ホームページ  >  記事  >  バックエンド開発  >  MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策

MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策

WBOY
WBOYオリジナル
2016-07-29 09:13:581142ブラウズ

PHP では MSSQL データベースが使用されており、データベース内でテキスト型フィールドが使用されていたため、問題が発生しました。データベースのデータをクエリするたびに、必ず不可解に切り捨てられます。最初は、私が使用していた PHP フレームワーク には文字列の長さに制限があるのではないかと思いました。後で、これが愚かな考えであることがわかりました。 , データを送信するとき、文字列の内容全体をデータベースに送信できるためですが、この現象は読み取り時にのみ発生するため、同様の問題があるかどうかを確認するためにネットで検索しました。幸運にも最初の検索で解決策を見つけることができたので、私自身と大多数の PHP 愛好家の必要に応じて、それをブログに再投稿することにしました。
次の 2 つの解決策があります:
1. php.ini を次のように変更します:
php.ini を開くと、mssql.textsize と mssql.textlimit の 2 つのオプションが表示されます:
有効範囲は 0 ~ 2147483647。デフォルト = 4096 .
;mssql.textlimit = 4096
; 有効範囲は 0 ~ 2147483647。デフォルト = 4096.
;mssql.textsize = 4096
デフォルトの構成は 4096 バイトであることがわかりますが、これは 4K に切り捨てられることがよくあります。適切なサイズに設定したら、直前のセミコロンを削除し、保存して WEB サーバーを再起動します。
上記の 2 つのオプションから、範囲は 0 ~ 2147483647 バイトであることがわかります。

MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策if(MS_SQL_G(textlimit)!=-1){
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策
sprintf(バッファ,%li" ,MS_SQL_G(textlimit));
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策
if(DBSETOPT(mssql.link,DBTEXTLIMIT,buffer) ==失敗){
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策 efree(hashed_details);
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策dbfreelogin(mssql
.login);
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策RETURN_FALSE;
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策}
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策}
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策
if(MS_SQL_G(textsize)) !=-1 ){
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策
sprintf(buffer,"SETTEXTSIZE%li",MS_SQL_G(textsize));
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策dbcm d(ms) SQL
.リンク ,buffer);
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策dbsqlexec(mssql
.link);
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策dbresults(mssql
.link);
MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策}

2. PHPでSELECTクエリを実行する前に実行するSET TEXTSIZE:

MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる理由の解決策mssql_query("SETTEXTSIZE65536");

上記のPHPソースコードからわかるように、実際にはSET TEXTSIZEが実行されます。

上記の方法が機能しない場合は、クエリ ステートメントで CAST 関数を使用してみてください。

上記は、PHP フレームワークの内容を含め、MSSQL データベースのテキスト型フィールドが PHP で切り捨てられる問題の解決策を紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。