1

問題:VARCHAR(256+)フィールドに対するMSSQLクエリは、VARCHARサイズが255より大きいかどうかに関係なく、PHPでは255文字しか返しません。

ここここで回避策への参照を見てきましたが、回避策は基本的にVARCHARをTEXTにキャストすることです。

SELECT CAST(myField AS TEXT) AS myField FROM myTable

しかし、次のようなクエリがたくさんある場合、これは役に立ちません。

SELECT * FROM myTable

つまり、確かに、そのようなすべてのクエリを探して、次のことを行うことができます。

SELECT CAST(myField AS TEXT) AS 'myField2', * FROM myTable

そして、後続のPHP変数をmyFieldからmyField2に更新しますが、それは私が持っているアプリケーションにとってかなり大きなタスクです。言うまでもなく、VARCHAR(256+)を持つすべてのテーブルのすべてのフィールドを検索してから、影響を受けるすべてのクエリをPHPアプリで検索する必要があります。

PHP 5.2.17を実行していますが、MSSQLはサポート/開発されていないことを理解しています。ここでMicrosoftがサポートするSQLServerドライバーを見てきましたが、PHPのバージョンを5.3.6または5.4に更新する必要があります。アップグレードした場合、それが何を意味するのか完全にはわかりません。さらに、すべてのmssql_connect()をsqlsrv_connect()に変更し、その他の関数をPHPアプリ内でmssqlからsqlsvrのバージョンに変更する必要があります。

他の回避策(信頼できるソースからダウンロードできる新しいDbLib C APIなど)を知っている人はいますか?PHPアプリ全体に散らばっているすべてを変更する必要はありませんか?

4

3 に答える 3

7

設定を編集/etc/freetds.conftds versionて 8.0 (サーバーが MS SQL Server 2000 以降の場合) または 7.0 (MS SQL Server 7 を使用している場合) に変更し、必要に応じて設定のコメントを外します。

于 2012-12-06T17:47:57.983 に答える
1

「MS SQL Management Studio」を起動

このウィンドウのメイン メニュー Query\Query Options\ で results\text を選択すると、最後に「各列に表示される最大文字数」が表示されます。デフォルトでは 255 です。変更します。

于 2012-11-26T06:27:19.490 に答える