[PHP-users 21102]Re: mssqlで取得したテキストフィールド、rtrimした状態にしたい。

Mashiki mashiki @ yanah.com
2004年 4月 2日 (金) 00:38:46 JST


 Mashikiです。

>PHP-4.3.4にて修正された、
>#25777のバグ修正 (mssqlで取得したテキストフィールドをrtrim()すべきではない)  
>の無効果について質問させてください。
>
>現在、
>FreeBSD 4.9-stable
>PHP-4.3.3
>MS SQL SERVER 7.0
>freetds-0.61.2
>
>の環境で運用しているのですが、
>今回PHP-4.3.5がリリースされたとのことなのでバージョンアップしてみました。
>
>すると、mssqlで所得したデータのほとんどにスペースが付いた状態になってしまい、
>プログラムがまともに動かなくなってしまいました。
>
>原因は4.3.4の時点でのバグ修正#25777だと言うことはわかったのですが、
>この部分だけをを4.3.3相当に戻すことは出来ないでしょうか。

configureのオプションはどのように設定したでしょうか。

http://cvs.php.net/annotate.php/php-src/ext/sybase/php_sybase_db.c?rev=1.
38.2.15

を見るとSybaseのほうはこの修正がされていないように見えます。


また、データを取得する際の関数は何を使用しているでしょうか?

もしmssql_fetch_row()等を使っているのであれば、全ソースコード上の
「mssql_fetch_row(」を「mssql_fetch_rowX(」などに置換し、
mssql_fetch_rowを内部的に呼んで、結果をrtrimして返す
「mssql_fetch_rowX()」なるファンクションを一つだけ作れば
おしまいです。

またPEARを用いているならさらに簡単で、mssql.phpを継承したクラスを
作成し、データ取得のメソッドをオーバーライドしrtrim処理を差し込んで
しまえば、修正はDSNだけになるかとおもいます。



PHP-users メーリングリストの案内