2009-03-04 5 views
5

PHPとmssqlライブラリを使用して大きなvarcharフィールドを選択すると、(フィールドタイプをテキストフィールドに変更する以外の)回避策がありますか?たとえば、varchar(500)です。 PHPは本当に文字数を255に制限していますか?それ以上のものを取り戻す方法はありますか?PHPとmssqlライブラリは、varcharカラムから256文字以上を選択できますか?

答えて

5

PHPページから、この問題は、Windowsプラットフォームの基になるデータベースドライバのようです。 Varcharは<文字を255文字まで返します。回避策は、SQL SELECTステートメント内のテキストにvarcharをキャストすることです。

+0

問合せでDISTINCTキーワードを使用する必要がある場合は、VARCHAR(MAX)へのキャストも機能しているようです。 –

-1

原因は実際にはPHPではなくMySQLである可能性があります。MySQL 5.0.3より前のバージョンMySQLは、VARCHARで255文字しか格納できませんでした。この制限は、後のバージョンで65535に引き上げられました。

+0

MySQL、MS SQLではありません。私はこれを開発する人ではない - 私のチームメイトはだ。私はちょうど質問をしています。 –

+0

おっと、申し訳ありませんが、私の間違い。 –

0

キャストについてはわかりませんが、関連するフィールドタイプをVarcharではなくTextに変更します。

+0

これは私たちがやったことですが、既存の機能を破壊するかどうかはわかりませんでした。それはしませんでした。しかし、あなたが実際に作業しているフィールドのタイプを変更できない場合の回避策です。 –

4

MS SQLのテキストに広いVARCHARをキャストするには:

myWideFieldが列切り捨てされていると、MYTABLEは...よく私のテーブルである
SELECT convert(text,myWideField) FROM myTable 

結果は256文字を超えるTEXTにキャストされます。

d。

+0

元の列名を使用する場合は、「AS」を追加する必要があります。例:SELECT convert(text、myWideField)AS myWideField from myTable'。 –

1

私は、php.iniの中の変数の値を変更しようとした:

mssql.textlimit = 2147483647 
mssql.textsize = 2147483647 

でもない作品...

を私はvarchar型に私の列VARCHAR(2000)のタイプを変更(最大)。 これは私のために働いた!

3

freetdsの設定を変更してください。サーバーで

変更/etc/freetds.conf編集:

tds version = 4.2 

へ:

tds version = 8.0 

は、Notes、Mssql Functions Referenceに貢献し、ユーザーの詳細情報。

+0

これは間違いなく、コードを変更することなく正の違いを生み出し、私の意見ではより良い解決策になります。 – jschrab

+0

あなたは美しさ - バージョン7.0は私のために働いて、この遺産の地獄に苦しんでいるすべての人に言葉を伝えてください! – puppyFlo

関連する問題