[PHP-users 5864] 特定の文字で挿入・更新エラー(PEAR DB.php)

Yusuke Gunji php-users@php.gr.jp
Mon, 04 Mar 2002 17:07:00 +0900


グンジと申します。いつもお世話になっています。

現在、DBにpostgresを使用して、Webシステムを
作成しているのですが、データをDBに挿入するところで
つまづいています

【環境】
・OS Redhat6.2
・Web Apache 1.3.22
・PHP PHP 4.1.2
・DB  postgreSQL 7.2

【インストール設定】
postgreSQL
  ./configure --enable-multibyte=EUC-JP

PHP
  ./configure \
     --with-apxs=/usr/local/apache/bin/apxs \
     --with-pgsql=/usr/local/pgsql \
     --enable-trans-sid \
     --with-config-file-path=/usr/local/lib/php \
     --with-mcrypt \
     --enable-mbstring \
     --enable-mbstr-enc-trans


【前提】
・PHPからDBへの接続はPEARのDB.phpクラスを使用。
  DSNは DB::connect("pgsql://username@localhost/dbname")
  DBには正常に接続されている。

・全てHTMLとして出力する場合はEUC-JPをメタに出力している。
  <meta http-equiv="content-type" content="text/html; charset=euc-jp">

・postgresの起動オプションは
  postmaster -S -i

・mbstring関係の設定は下記の通り
    http-input-encoding-translation  enabled 
    mbstring.detect_order            auto 
    mbstring.http_input              auto
    mbstring.http_output             EUC-JP 
    mbstring.internal_encoding       EUC-JP 
    mbstring.substitute_character    no value

【現象】
・PHP上で、"株"という文字を入力して挿入/更新すると、エラーとなる
  他の文字列は今のところ問題ない。

・コンソール上から直接psqlでデータベースに接続し、
  insert into t1 (v1) values ('株式会社');
  とやると正常に登録される。

・pg_xxxxxを使用すると問題なくInsert等できる。




現状ですと、株 以外の文字列でエラーが起こっている様子はありません。
文字化け以前の問題なので、postgresへデータが渡されるあたりに
問題があるのでしょうか?
汎用的なクラスを使用し、DBとのやりとりを行おうと考えているので、
出来ればDB.phpで行きたいと考えています。

回避方法、対処方法などご存じの方がいらっしゃいましたら
教えていただけませんでしょうか?
よろしくお願いいたします。


-- 
Yusuke Gunji
+ cross@gun-z.net
+ http://www.gun-z.net (Haven't done yet)