問題: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アプリ全体に散らばっているすべてを変更する必要はありませんか?