[PHP-users 30799] Re: DBから取り出した特定の文字列が表示されない
Eijun Kitamura
eijun @ hal.ne.jp
2006年 11月 26日 (日) 04:50:22 JST
塚田様:
北村です。
お世話になっております。
chores> > chores> 「OCI_Result($stmt, 'CALC_ITEM_NAME')」は、「リサイクル預託金」を返て
chores> > chores> いますか?
chores> > 何も返していません。
chores>
chores> 「何も返していない」を絞り込むには var_dump 関数を使って、何が出力される
chores> かを確認すると良い気がします。
chores>
chores> NULLなのか、空文字なのか などが分かれば、分かる人には分かるかも。
var_dump($calc_item_name);
[10]=> string(0) ""
と返ってきました。
#該当レコードだけ示しています。
chores> SELECT 'リサイクル預託金' FROM DUAL;
OSqlEditで実行してみたところ、
「リサイクル預託金」と返ってきます。
chores> また、「リサイクル預託金」を含む列に文字を結合するとどうなりますか?
chores> (SELECT 句を以下のような感じで)
chores>
chores> SELECT 'a' || CALC_ITEM_NAME AS CALC_ITEM_NAME
chores>
chores> 仮に、上記のようなSQLで「aリサイクル預託金」と取得できるなら、PHP側で先
chores> 頭の文字列「a」を外す処理をするとかは(業務上?)許されませんかね?
var_dump()してみると、リサイクル預託金のレコードは
[10]=> string(0) ""
と返ってきます。
ちなみに、NULLを入れたレコードを作って、同じことをやってみると
[0]=> string(1) "a"
と返ってきます。
これは、どう解釈すればよいのでしょう。
NULL値の方は正しく返ってきているということでしょうが、リサイクル預託金の方が
何なのか・・・。
chores> UTF-8 を使う必要が無いとしたら、テーブル定義やサーバ(Orcle)・クライアン
chores> ト(PHP) 間の通信などを、EUC で一貫するというのは、できないでしょうか?
chores> 可能なのかは分かりませんが、サーバ・クライアント間の通信だけでも。
chores> (PostgreSQL では、可能でした。Access(JET)では、(私には)不可能でした。)
データベースのキャラクターセットは指定されているので変更できないですが、
データ型やPHPの設定は変更させてもらえそうな感じです。
サーバ・クライアント間の通信をEUCにするというのが、今の私の知識では理解できませんが、
ちょっと調べてみることにします。
PHP-users メーリングリストの案内