[PHP-users 3953] シフトJISにしないとデータが読めない

shinmori toshiaki php-users@php.gr.jp
Wed, 28 Nov 2001 17:37:42 +0900


新守@CBと申します。

以下のような環境で実験しています。

Webサーバー
 Readhat 7.1J
 Apache 1.3.20
 php 3.0.18-i18n-ja

データベースサーバー
 WindowsNT 4.0
 Oracle 8.1.6(表名はマルチバイト文字を使用)

 この環境で、phpでデータベースに接続し、SQLを実行するとエラー
(ORA-00911)になってしまいました。
SQLをシフトJISに変換し、SQLを実行すると正常終了します。

ここで疑問なのですが、シフトJISのサーバーへのSQLって
サーバーの文字コードに合わせる必要があるのでしょうか?
もしくは何か設定が不足しているのでしょうか?

ちなみにWebサーバーからsqlplusを使用した場合は問題なく読み
出せるのでphpにからんだ設定が不足していると思っているのですが・・。

助言等よろしくお願いします。

以下実験したサンプルコードです。

<?php
 $dbora = OCINLogon("hoge","hoge","hoge");
 $sql = "select 店舗コード,店舗カナ名称,店舗漢字名称 from 店舗マスタ";

 // シフトJISへ変換
 $sql = i18n_convert($sql,"SJIS","EUC");

 $par = OCIParse($dbora,$sql);
 if($par == false){
    echo "error\n";
    exit;
 }
 $res = OCIexecute($par, OCI_DEFAULT);
 if($res == false){
    echo "error\n";
    exit;
 }
 echo $res;
 OCILogOff($dbora);
?>

+----+----+----+----+----+----+----+
(株)コンピューター・ビジネス 新守
e-mail: shinmori@cbnet.co.jp
+----+----+----+----+----+----+----+