ホームページ > バックエンド開発 > PHPチュートリアル > php および mssql_PHP チュートリアルの ntext フィールド エラーの概要

php および mssql_PHP チュートリアルの ntext フィールド エラーの概要

WBOY
リリース: 2016-07-13 10:56:08
オリジナル
924 人が閲覧しました

php + mssql だと本当に面倒です。 PHP および mssql を読み取る際の ntext フィールド タイプの問題が再び発生します。ntext の内容が長すぎると、読み取りが不完全になります。

長い間ネットで検索しましたが、phpでntextを読み込むときにエラーが発生すると皆が言っていましたが、私のページではエラーが見つからなかったので、落ち込んでいました。後で、PHP はデフォルトで 4K までのコンテンツしか読み込めないことがわかりました。私のコンテンツは 4K を超えていたことが判明しました。改造方法は以下の通りです

次:

1.phpをphp5にアップグレードします。

幸いなことに、私のものはすでにphp5です。

2. php.ini のパラメータを調整し、php のデフォルトの最大読み取り可能サイズを 4K に変更します。

; 有効範囲は 0 ~ 2147483647。デフォルト = 4096.
;mssql.textlimit = 4096

; 有効範囲は 0 ~ 2147483647。デフォルト = 4096.
;mssql.textsize = 20480

mssql.textlimit と mssql.textsize の前の「;」を削除し、デフォルト値を 20480 (20K) などのより大きな値に変更します

3. Webサーバーを再起動します。


ワクワクする瞬間が来ると思って php ページを実行すると、効果は以前と同じで、フィールド データが完全に読み込まれませんでした。その後、PHP の ntext サポートはあまりフレンドリーではなく、テキストに変換する必要があるという情報を見つけました。そこでまた

を使いました

Convert(text, content) を実行しましたが、効果がなく、iis がほとんど壊れてしまいました。長い間ネットで検索していますが、解決策が見つかりません。諦めかけたとき、あるアイデアをきっかけにデータベースの接続方法を変更しました。

を入れました

odbc_connect が mssql_connect に変更され、成功しました。

phpリンクmssqlの問題ntextを読み取れません


明らかにデータベースに接続できますが、データを読み取ることはできません。 Google や Baidu で検索した結果、mssql を読み込むときに PHP によって返される ntext フィールドが空であることがわかりました。ntext フィールドを text に変更することをお勧めします。

テーブルに ntext フィールドがない場合は、次のコードを使用できます:

コードは次のとおりです コードをコピー

//MSSQL に接続します

$link = mssql_connect('KALLESPCSQLEXPRESS', 'sa', 'phpfi');

if(!$link !mssql_select_db(‘php’, $link))

{

die('データベースに接続または選択できません!');

}

// 簡単なクエリを実行し、

のバージョンを選択します

//MSSQL を実行して印刷します。

$version = mssql_query(‘SELECT @@VERSION’);

$row = mssql_fetch_array($version);

echo $row[0];

//掃除

mssql_free_result($version);

? 》

テーブルに ntext フィールドがあり、それをテキスト フィールドに戻すことが難しい場合は、次のことができます:

1.php.iniを変更します

php.iniを開く

見つかりました:

;mssql.textlimit = 4096

に変更されました

mssql.textlimit = 2147483647

見つかりました:

;mssql.textsize = 4096

に変更されました

mssql.textsize = 2147483647

2. 変更されたフィールドを使用できます。SQL Server の ntext フィールドと nvarchar フィールドはコンテンツの保存に Unicode エンコーディングを使用するため、PHP は mssql 拡張機能を使用して ntext 型と nvarchar 型のフィールドを読み取るとエラーが発生します。

タイトル フィールドのタイプが nvarchar で、コンテンツ フィールドのタイプが ntext の場合、次の SQL ステートメントはエラーを報告します:

間違い:

記事からタイトル、内容を選択

正解:

コードは次のとおりです コードをコピー
タイトルとしてconvert(varchar(255),title)を選択し、記事のコンテンツとしてconvert(text,content)を選択します

{この方法はあまり実用的ではありません。ntext のコンテンツが長すぎると、変換後にデータが失われます。また、sql2008 で ntext を nvarchar(max) に変更しても機能しません。

3. 仮想ホストの場合は、adodb コンポーネントを使用して読み取ることができます。ホストがサポートしていない場合、現時点では私にできることは何もありません。

コードは次のとおりですコードをコピー
include("adodb/adodb.inc.php"); //adodb クラス ライブラリ ファイルをインクルードします

$conn=NewADOConnection('odbc_mssql') //SQL Server データベースに接続します

$conn-》Connect("Driver={SQL Server};Server=localhost;Database=mydb;",'username','password');

{adodb を使用する際に注意すべき点は、adodbPHP を使用して MSSQL に接続するための前提条件がドライバーの問題であることです。MSSQL 2000 をサポートしたい場合、PHP に付属のドライバーは MSSQL 7.0 のみをサポートします。 System32 または PHP ディレクトリにコピーされた MSSQL 2000. .2039.0) の ntwdblib.dll (2000.80) を変更する必要があります

5.2.11 は MSSQL 2000 のみをサポートします。MSSQL 2005 および 2008 をサポートする必要がある場合は、Microsoft が提供するドライバーをインストールする必要があります

したがって、仮想ホストの場合は、基本的にできることは何もありません

}

? >

mssqlのntextフィールドを読み取ると空が返されます

テスト中、データベースに接続できることは明らかでしたが、データを読み取ることができませんでした。情報を検索したところ、mssql を読み取るときに PHP によって返される ntext フィールドが空であることがわかりました。ntext フィールドを text に変更することをお勧めします。

テーブルに ntext フィールドがない場合は、次のコードを使用できます:

コードは次のとおりですコードをコピー テーブルに ntext フィールドがあり、それをテキスト フィールドに戻すことが難しい場合は、次のことができます:
// MSSQL に接続します

$link = mssql_connect('KALLESPCSQLEXPRESS', 'sa', 'phpfi');

if(!$link !mssql_select_db('php', $link))

{
die('データベースに接続または選択できません!'); }

// 簡単なクエリを実行し、

のバージョンを選択します // MSSQL を実行して出力します

$version = mssql_query('SELECT @@VERSION'); $row = mssql_fetch_array($version);

エコー $row[0];

//掃除

mssql_free_result($version); ?>




1.php.iniを変更します


php.iniを開く

見つかりました:

;mssql.textlimit = 4096

に変更します

mssql.textlimit = 2147483647


見つかりました:

;mssql.textsize = 4096


に変更します

mssql.textsize = 2147483647


2. 変更されたフィールドを使用できます。SQL Server の ntext および nvarchar フィールドはコンテンツの保存に Unicode エンコーディングを使用するため、PHP は mssql 拡張機能を介して ntext および nvarchar 型のフィールドを読み取るとエラーが発生します。

タイトル フィールドのタイプが nvarchar で、コンテンツ フィールドのタイプが ntext の場合、次の SQL ステートメントはエラーを報告します:


間違い:

記事からタイトル、内容を選択

正解:


コードは次のとおりです

コードをコピー

3. 仮想ホストの場合は、adodb コンポーネントを使用して読み取ることができます。ホストがサポートしていない場合、現時点では私にできることは何もありません。

タイトルとしてconvert(varchar(255),title)を選択し、記事のコンテンツとしてconvert(text,content)を選択します
コードは次のとおりです コードをコピー
include("adodb/adodb.inc.php"); //adodb クラス ライブラリ ファイルをインクルードします
$conn=NewADOConnection('odbc_mssql') //SQL Server データベースに接続します
$conn->Connect("ドライバー={SQL Server};サーバー=localhost;データベース=mydb;",'ユーザー名','パスワード'); ?>

http://www.bkjia.com/PHPjc/632192.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632192.html技術記事 php + mssql だと本当に面倒です。 PHP および mssql を読み取る際の ntext フィールド タイプの問題が再び発生します。ntext の内容が長すぎると、読み取りが不完全になります。 長い間ネットで検索していて、みんなこう言っています...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート